请选择 进入手机版 | 继续访问电脑版

明德扬论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信扫一扫,快捷登录!

查看: 155209|回复: 0

FPGA设计基础交流【汇总贴】

[复制链接]

35

主题

57

帖子

6965

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
6965

荣誉管理论坛元老

QQ
发表于 2020-5-14 09:59:06 | 显示全部楼层 |阅读模式

马上注册,看完整文章,学更多FPGA知识。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
【问题1.1】如何知道ddr3里不空,可以读取了?
答:DDR3和RAM一样,是一个存储器件,它的每个内部单元都存储了当前的数据状态值。
      但DDR3和RAM本身,是没有“空”、“存有数据”,“数据满”等概念的。只要给地址,它就会把当前地址的数据给到总线上,而且这个地址可以读很多次。
      在设计的时候,是由设计师用自己写逻辑来判断DDR3是否为空。

【问题2】SPI多字节发送是多个字节连在一起发还是分成单字节来进行发送?
答:每款芯片的数据手册,都会有时序图的介绍,需要按照芯片数据手册的要求进行通信。每款芯片的要求都是不同的。
      所以,您需要查阅数据手册。

【问题3】如何避免竞争和冒险的情况?
答:竞争和冒险是由于组合电路中计算的延迟不一致而导致的。它是天然的、不可克服的现象。
      虽然它不可克服,但在FPGA设计里,它根本就不是一个问题。
     因为FPGA都是在D触发器的时钟上升沿对电路进行采样,只要时钟上升沿前,电路计算结果已经确定,竞争和冒险已经没有了,那就不会有问题。
     那设计时,如何确认时钟上升沿前,计算结果已经确定了呢?
     这就靠时序报告了:时序报告会告诉任何两个D触发器之间,它们电路延时之和,从而确认在上升沿之前计算结果确定。
     总而言之,设计时不用考虑竞争和冒险;设计完看,看时序报告;没有问题,那就正常;如果时序报告有问题,就解决时序问题。

【问题4】计数器分频怎么个不稳定法?
答:1. 时钟在FPGA里是非常重要的,所有的寄存器都是统一在时钟的节拍下工作。这个时钟就相当于一个军队的司令部,寄存器都听从司令部的命令下工作。
      2. 一个稳定的系统,时钟是越少越好。就相当于,一个军队,司令部越少越好。如果司令部越多,那么部队之间的协作必须要增加流程和成本。
      3. 计数器分频的时钟,无形中增加了时钟个数,另一方面,就相当于弄一个自己独立的王国,自然就不稳定。
   

【问题5】仿真是正确的,但为什么上板就不行?
答:首先要明确,仿真可以而上板不行,这是属于研发过程中,非常非常之正常的现象,可以说仿真通过后,上板一次性就成功的概率,小之又小。
原因是:仿真只是用电脑模拟运行的情况,它与真实情况可能有所差别。例如:
1. 输入激励是您想象出来的,事实上是不是这样输入?
2. 您的代码是否可以综合出电路?
3. 您的仿真是否测试完所有的情况?
以上都表示了仿真和实际是有差距的,所以不能认为“仿真正确了,上板就正确”。

【问题6:管脚未分配的现象】老师,我把CPLD的一个引脚接到了LED灯,但是程序中没有分配这个管脚,第一个版本的程序上电后这个LED灯一直是亮的。第二个版本上电后LED一直是灭的。这两个版本的程序,都没有对这个管脚分配,是什么原因导致的呢?
答:管脚如果未分配,则管脚电平值可认为是不可控,也就是随机。

【问题7:FPGA资源不足问题】当程序所使用的资源,超出FPGA芯片资源时,如何处理?
答:1. 按照错误提示,判断是哪种资源不足,如管脚数、RAM、寄存器等。
       2. 阅读资源QUARTUS、ISE和VIVADO的资源报告,查看是哪些模块占用了哪些资源。
       3. 分析该项目程序中各个模块的资源占用情况,分析代码,综合运用多种方法,以求减少资源的使用,如速度换资源;去除冗余的逻辑;降低设计精度;速度换资源等方法。注意,这些都需要花费大量时间,一点一点去抠资源。
       4. 如果资源依然不足,可以考虑换更高级的芯片;或者改变功能需求等。

【问题8】 就是lvds恢复出数据和时钟,对齐是需要手动调节时钟相位,还是写代码自动调节?serdes
答:我们做法是手动调节相位对齐。理论上,任何功能都可以使用代码来调节,只是有没有必要以及复杂度而已。

【问题9】FPGA生成的DDS数据如何导出到matlab中
1. 可以通过串口、千兆网等接口,传送到电脑上;
2. 可以采用在线调试工具,如SIGNALTAP、CHIPSCOPE、VIVADO等,捕捉到信号,然后保存的方式得到数据。


【问题10】通常情况下rtl代码module里面的输入信号,值是哪里来的呢?   
答: 1. 来源于其他模块的输出
        2. 来源于FPGA外部的管脚,例如按键、其他芯片的输出信号等



【问题11】问一下关于敏感信号的事情,任何信号都可以被当作敏感信号吗?也就是always模块里面:always @(posedge din_vld or negedge rst_n)begin这样写可以吗?

答:语法上是可以的,但不符合FPGA和ASIC的设计规范。一般这个是写时钟和复位信号。不规范的话,会造成系统的不稳定


【问题12】if(counter<</span>8)请问这句代码是什么意思呢,按理来说/的优先级高于左移运算符呀?
答:不清楚它要表达的含义。串并转换的方法,可以参考至简设设计原理与应用书籍, 串口案例。
FPGA至简设计原理与应用】书籍连载13 第三篇FPGA至简设计项目实践 第四章 串口通信
http://www.fpgabbs.cn/forum.php?mod=viewthread&tid=1013&fromuid=9396
(出处: 明德扬论坛)


【问题13】老师,怎么将信号实现准确的ns级别的延时呢,有什么好思路吗?
[color=rgba(17, 31, 44, 0.56)]答:正规的做法,就是采用寄存器打拍来延迟,精度为一个时钟周期

【问题14】lvds和lvds_25有什么区别?
答:主要区别在于内部buffer的供电电源情况,在电气方面,两者是等效的(参见数据手册规格)但是内部的I/O电路配置不同

【问题15】xilinx,spartan6的jtag引脚,tck,tms,tdi,tdo需要做上拉处理吗 0.png 这个是ALTERA EP4C的JTAG电路,仅供参考

【问题16】复位信号必须要放到敏感信号列表吗?
答:异步复位需要将复位信号加到敏感列表,同步信号不需要

【问题17】用FPGA输出0->1或者1->0的信号,我现在想把上升沿或者下降沿的时间拉长到10ms左右,用FPGA的输出管脚可以实现吗?
答:FPGA直接输出的数字信号,上升沿和下降沿都是很快就完成变化的。如果要控制变慢,其实就是输出固定电平的信号,那么这个需要外置DAC来实现。


【问题18】我们的TFT显示屏是工作在DE模式,是吧?
答:我们的案例默认使用的是DE模式,如果需要非DE模式,可以手动修改底板硬件实现。

【问题19】很多的数字电子元件的引脚都是要求有明确的电平(0/1),但是有个别的器件引脚链接时,可以处于悬空状态【但很多的教材上写的 引脚不能悬空,因为可能导致数字逻辑电路的状态不确定】,这一点如何理解呢~?
答:对于这种引脚,需要去看对应芯片的数据手册,一般里面都会有介绍说明的。

【问题20】CPLD是没有IP核可以使用吗?
答:看要使用的ip核是什么类型,像RAM、FIFO等固有资源都是有IP核的

【问题21】多个模块的输出信号,可以连到一起,共同驱动另一个模块吗?
答:遇到此问题,可以稍微推理一下就能清楚了。例如模块A有一个输出信号a,模块B有一个输出信号b,然后这两个信号连在一起(怎么做的不清楚,先假充有这种情况),共同均有一个模块C的输入信号c。
      那么存在这种情况,模块A要输出1,模块B要输出0给模块C,那么模块C收到的是0还是1呢?这种情况下,模块C就不清楚收到什么了。
      所以本题答案:两个模块的输出信号不能连在一起。

【问题22】实质的时钟周期与仿真时钟周期有差别,这个差别会累积起来吗?
答:仿真的时候使用的是理想时钟,例如50M时钟,在实质的板上不可能完全等于50M的,一定有差别。
      这种差别的积累,可能会对“总时间”有影响,例如计算1秒时钟,那么就有可能有差别了。
      但这种差别的积累,不会产生时序的混乱:因为FPGA内,所有D触发器,都是在一个时钟周期内计算完的,只要满足时序要求,不关心实际频率是多少,总之上升沿来就计算一次。
      如不清楚,请仿真,尝试用不同周期的时钟来对同一个电路仿真。

【问题23】如果扇出很大,high fanout  到了4000多,要怎么优化?
答:扇出是指一个信号驱动了很多其他信号(即这个信号是其他很多信号的产生条件),FPGA对扇出数量有要求,不能扇出太多。
       如果扇出太多了,该怎么优化呢?现举例如下:
       假设信号A,驱动了信号BCDEFG,即扇出数为6。优化思路是:让A用寄存器分别产生信号A1和A2,再用A1驱动信号BCD,用A2驱动信号EFG。这样扇出数减少为3。

【问题24】如果FPGA芯片没有时钟晶振,其他IO口是不是就不能输入数据呀。晶振影响输入数据不?答:要看输入是否需要时钟。
      例如:使用串口的时候,在电路上就接收和发送两根线,没有用到时钟,所以晶振不影响。
                而摄像头输出图像的时候,需要先给摄像头一个时钟,再进行相关的配置,这时晶振就有影响。

【问题25】异步信号慢时钟域采集到快时钟域的方法有吗?
答:1、使用FIFO进行跨时钟域处理
      2、慢时钟域的信号到快时钟域,是可以被采集到的,跨时钟域之后进行打拍,使其同步化即可

【问题26】工程中经常使用的sop表示第一个有效数据、eop表示最后一个有效数据、mty表示无效字节数等,这些都是那些单词的缩写?
答:习惯性引用了华为项目时的缩写,具体不清楚。


【问题27】请问一下,贵公司的状态机模板为什么要用state_c判断输出情况,是有什么考虑吗?这样的话输出信号不是要延迟一个时钟吗?并且导致状态与输出的不对应?用state_n的话可以节省一个时钟,希望能解答一下这个疑惑.
答:一般来说,状态没有必要与输出要对应上,而是与输入对应上。由于状态与输入对应上,输出与状态延时一个时钟,相当于输出与输入延时一个时钟,这是一般模块的正常延时。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|MDYBBS ( 粤ICP备16061416号 )

GMT+8, 2024-3-28 23:41 , Processed in 0.072285 second(s), 33 queries .

Powered by Discuz! X3.4

本论坛由广州健飞通信有限公司所有

© 2001-2019 Comsenz Inc.

快速回复 返回顶部 返回列表