微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 今天面试把我问住了,大家给我个通用的答案吧,我觉得这块是短板。

今天面试把我问住了,大家给我个通用的答案吧,我觉得这块是短板。

时间:10-02 整理:3721RD 点击:
问题就是FPGA跟DSP之间的接口问题,面试官把我问出shi来了,臊死我了。
他们之间究竟是怎样交互数据的,关键词,ddr或者sram。
假设是这样,我发送一组数据给DSP,DSP处理数据后算出几个值,再把他们传给fpga。通用的处理方法应该怎么办,这块不是很清楚。
我有一块板子,有dsp还有fpga,我简历上的项目是用的师兄的,软件部分(FPGA)能看个大概,硬件的连线我看不太懂,原理图也没有研究好,看实物图,dsp与fpga之间有一块sram,他们的数据传输到底是怎么一回事。
我交待一下能看懂的部分,FPGA的输入端口有几个是DSP的控制线,FPGA内部生成了个双口的RAM,FPGA往里面写,DSP往外读取,写地址是FPGA的时钟控制,但也受dsp的控制信号辖制,写满之后会有标志信号输出且作为输出端口。读地址是由dsp的时钟控制的。在FPGA给DSP传数据的时候,从RAM里面读取出来的数据经过一个双向端口输出,这一切都是在FPGA内部发生的,当dsp给fpga发送数据的时候也是从这个双向端口进入FPGA,就是说进入fpga的数据,从FPGA输出的数据都是经过这个唯一的数据端口。dsp的部分,原理图显示,它连接着sram,还有flash,共用地址线,数据线,当然片选可以区分两个芯片,所以在大神您看来,这个数据交换,这个接口,到底是怎么一回事,我不想在下一次面试完后再给舍友发送:“The HR just beat the shit out of me!”
大神留步,给解释一下吧,蛋疼的sram.

你最近成功刷屏了...


我也不想刷屏,学习FPGA,又没有人指导,最近在做项目,又要找工作,要累死了,很痛苦。问题又急需解决,又没有给解答,只能厚颜无耻的在论坛里发问,好歹大家都热心给我回复,我很感动。我虽然刷屏了,但是我确实是在问问题,不是在无病呻吟,也确实通过论坛解决了不少问题。
我不光只是索取,我也积极解答他人的提问,前提是我懂,有相关的经验,我也会在感兴趣的题目上跟小编热烈讨论。
我很喜欢这个论坛,很活跃,很健康,同时我也非常感谢您的回复。如果您能在技术上给我指导一二,我会更高兴。

如果只是少数的(几十个)数据的交互,在FPGA内开个双口RAM,一个口给DSP控制,一个口给FPGA控制。这就可以完成数据的交互了,至于什么时候启动DSP的计算,FPGA什么时候去拿DSP的计算结果,这可以用中断的形式或者控制位的方式。
仅个人认知范围内的答复。

FPGA传送给dsp128*4个数据,而DSP要传送给FPGA4个数据,我猜,传给dsp的数值应该是放进了SRAM,之后,dsp读取sram中的数据,进行计算之后再传送4个计算出来的值给FPGA,关键的问题是dsp传送数据给FPGA,因为数据量小,会不会,直接通过连线把数据给了fpga,dsp和fpga之间可以直接连接吗?会不会有电平上的差异。stratix 111与6713。

就喜欢看你讲故事 哈哈


随便说说,别当真....我可没说你光问不答..
这论坛就需要人刷屏...

我们目前的做法是做一个wrapper,把外部处理器的内存总线逻辑变换成FPGA内部总线的一个master device,当然不止是做数据传输,还有控制需求。如果只有数传需求,做成slave也行

我所知道的是FPGA和CPU之间都是通过总线来实现的,比如以前的PCI,现在的PCIe,再慢的点就有local bus,这个local bus就相当于一个flash的接口。如果要非常高的数据共享,那还可以通过外部的双口ram,比如IDT就有一款。如果是使用总线交互,那么FPAG可以做一个模块来作为CPU的外设,比如PCIe的slave。
另外,其实在现在的FPGA里面都有集成cpu方案的,你可以找款来学习一下。我所以知道的就是XILINX使用的是ARM公司的AXI总线,其实这个总线也是可以挂在芯片外面的。
个人水平有限,不知道是否有说错哈。仅供参考。


我看您都是论坛里的老人了,不是技术大牛也是小牛了,不要老是听故事,看笑话,麻烦您高屋建瓴,给讲一讲FPGA与DSP之间的数据交互与sram(ddr)之间的辩证关系。
目前我觉得是这样:
1 FPGA给大量数据给DSP,而DSP只给FPGA很少的数据,在这种情况下,DSP可能会用到SRAM(DDR),DSP先把接收到的数据存在SRAM(DDR),然后再慢慢处理。
2 两者互相传给对方的数据都很多,这样的话,DSP,FPGA恐怕都要各自外挂上一个SRAM(DDR).
3 两者互相传给对方的数据都很少,这样的话,DSP,FPGA恐怕都不需要外挂上一个SRAM(DDR).
4  FPGA给DSP少量数据,而DSP给FPGA很多的数据,在这种情况下,FPGA可能会用到SRAM(DDR),FPGA先把接收到的数据存在SRAM(DDR),然后再慢慢处理。
为什么接收大量的数据往往要外挂SRAM(DDR),那就是处理的问题了,因为实时处理实在是很难。
我觉得是这样,假如我说的对,大家给我点赞,假如我说的不对,希望你们批评指正,并原谅我那一本正经的胡说八道。


关于芯片之间的数据交互,高速串行总线正变得越来越流行,大有天下一统之势。
但是说到高速串行总线,我就又有了新的问题。
1.假如说原先14位的数据并行进入FPGA,时钟频率是56M,那么数据速率就是784Mbps.而PCIe,如果我没有记错的话,它的数据速率有两个,2.5Gbps,5Gbps.这样的话,784Mbps显然是比较慢了。
我的问题来了,FPGA接收到的数据速率784Mbps,但是假如FPGA与DSP之间使用了PCIe,那么,FPGA发送数据给DSP的数据速率最小是2.5Gbps,快到有点浪费,个人感觉也没有什么解决方法。
关于高速串行总线,应该单独开一贴,普及一下教育,以人们能听懂的方式,这是我一直以来的愿望,但是我懂的很少,机理也不是很清晰,目前难以成行。真的,要是一个人能把高速串行总线讲的让我听懂,我就能让你们听懂。
另一点是,比较尴尬,我发帖,管理员要审查,一天之后你们才有可能看见,我上午9点已经发了一贴,到 下午4点还看不见,审查还没有通过。所以论坛是有机制的,是可以防止刷屏的。

这是问应届生的问题吧.....有n种总线可与实现传输



    You are god damm right.


首先谢谢您的回答。
您的理解是正确的,确实是这样。我这里就是在FPGA里头开了个双口RAM,FPGA写,DSP读,就是这样。这里的数据量呢,是128*4,就是每个RAM128个数据,例化了4个双口RAM。这是数据量小的情况,可以这样做。
   
但是在大数据量的情况下,大体的架构,我说的对吗?就是dsp,fpga都需要外挂DDR3,先把数据缓存下来,再进行处理,大数据处理,DDR3的存在是十分必要的。
我还是说具体的吧。假如FPGA需要把接收到的数据(是高速串行的数据)传送给dsp,应该怎么做,我不是很懂,不过按照前面的经验,应该也是先写进一个缓存,然后dsp读取,这里恐怕就不适合用双口RAM了,因为数据量很大。我觉得应该是先把接收到的数据写到一片外挂的DDR3上,然后DSP再读取,可是DDR3不可能有两组地址线,两组数据线,因此,类似双口RAM的概念是不行的,那应该怎么办。我目前的猜想是FPGA直接就给dsp数据,dsp接收到后把数据存在挂在自己身上的DDR3,然后慢慢处理,完了之后把需要的数据传给FPGA,FPAG接收到后也可以存在自己的外挂DDR3,然后慢慢处理。我的思路没毛病的,应该是会有一个比较经典的数据交互结构的。大神给讲一讲吧。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top