FPGA个人学习总结1

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.综合方面

1)经综合后:

普通的数据单端输入都会加一个IBUF缓冲器;

数据单端输出有个OBUF缓存器;

时钟输入口会加BUFGP缓冲器;

对于4选1的mux,if结构和case结构都只需要一个slice,由MUXF5控制两个LUT

下图为8选一case结构,MUXF6控制两个MUXF5,以两个slices实现8选1,用if结构实现的结构也是一样的

注意一点:

使用View Technology Schematic,来查看最底层的实现形式,即FPGA中的LUT、MUXF5等使用

但有的综合后RTL Schematic相同,Technoligy Schematic不同,而有的又相反(如one bit 相加,加括号前后例子),那么我们应该以哪种为最优呢?

如下图:图上下分别为加括号前和加括号后RTL:只有根据实际需要来选择,如信号的先

后顺序等等

2.LUT的名字后_数字,那个数字代表什么意思?

LUTa_b:a代表所有输入数据位宽,即输入数据的个数,切勿将位宽理解为“每个输入端口的数据宽度(因每个输入端口是单bit输入);b代表LUT被初始化的状态

3.比较器位宽大小对综合结构的影响

当比较的位宽高于一定位数时,综合会采用进位链结构,如下图:

4.在调用DCM核时,CLKFX_OUT为输出引脚,并且LOCKED_OUT必须勾上,否则波形无法输出,具体步骤参考本文件夹下“dcm核设置”

5.如何判断PCB板上的复位芯片是低复位还是高复位?

将复位芯片的输出连接至LED等,若正常工作后是亮(前提是LED另一端是接地),表示正常工作是高,说明之前是低,即为低复位,不亮则为高复位

6.两种不同下载接口的比较<具体还可参考项23>

○1每个FPGA都有两组下载接口JTAG和SPI;

○2JTAG中TMS为模式选择,TCK为时钟,TDI和TDO分别为输入输出数据;

○3SPI中SS(有的为STB)为片选信号,SCK为时钟信号,另外两根为数据信号;

○4通过JTAG下载程序到FPGA:编程管脚跳针要拔掉,掉电后程序也会丢失,即下次上电工作后需要重新下载程序

○5通过SPI下载程序到FPGA:先将编程引脚PROG接地,SPI接口断开与FPGA通信,而与flash通信,程序下载到外挂FLASH中,然后将PROG跳针拔掉,FLASH中程序下载到FPGA中

○6外部Flash不单是一个裸存储器,它还有SPI接口,图中的SPI接口就是从

FLASH的SPI

接口中引出来的引脚

○7SPI接口是串行同步通信,串口UART是串行异步通信

7.关于示波器

当配置芯片相应寄存器后,观察输出的波形频率时,若出现频率跳动,可以检查示波器上的采样电平是否在波形的中间位置

8.关于复位信号与寄存器声明

寄存器在声明时最好给个初始值,即加载时的值,例如:reg[1:0] a = 2’b00或直接写0; 复位信号不要列在敏感列表中,直接使用if(rst),使rst成为控制信号

9.如何看出接口读取数据所用的时钟沿

上图可以看出,时钟的下降沿对准数据中心,说明该芯片的此接口是用时钟的下降沿来读取数据的

上图可以看出,时钟的上升沿对准数据中心,说明该芯片的此接口是用时钟的上升沿来读取数据的

故:如果芯片AB之间有走线延迟的话,那么我们在芯片A要用相反的时钟沿送出数据,经过走线延迟后,芯片B对应接口读取数据的时钟沿正好对准到达芯片B的数据的保持时间,即使最大延迟半个周期,也正好对准数据的中心

10.FPGA内部寄存器都是高复位,综合时综合工具会自动为复位信号反相,

若外部芯片为低复位,则可在FPGA设计时,先将复位信号反相,然后使用if(rst)

11.当控制信号高于slice的供应时,可将控制信号转化为数据信号,例如:

If(a) q <= b; q <= (a & b)|(!a & q);

else q <= q;

12. 毛刺问题

概念:由于延迟的作用, 多个信号到达终点的时间有先有后, 形成了竞争, 由竞争产生的错误输出就是毛刺

产生条件:在同一时刻有多个信号输入发生改变

出现时间:由于冒险多出现在信号发生电平跳变的时刻, 即在输出信号的建立时间内会产生毛刺, 而在保持时间内不会出现,

13.调用ram

在建立RAM的IP核时,关于是否选择输出寄存器,根据需要!选择一个寄存器,数据则在采到地址后,延迟一个时钟周期,才会输出

14.综合后的寄存器

fd为普通的寄存器;fdr为带复位端的寄存器;fdre为带复位端和使能端得寄存器15.寄存器地址注重参数化设计

可以先用define定义相关寄存器的地址参数,然后在运用中使用该参数,如下:

`define reset_addr 4'b1101;

always @(posedge CLK32M or negedge RST)

begin

if(!RST)

begin

SPI_EN <= 8'b0010_0000;

CTL[7:1] <= 7'b1111_101;

RESET <= 8'b1101_0000;

end

else if ( wr_reg == 2'b01 )

case(ADDR)

`spi_en_addr : SPI_EN[7:0] <= DATA[7:0];

`reset_addr : RESET[7:0] <= DATA[7:0];

……….

当给寄存器的赋值是某一固定值时,为只读寄存器

16.综合问题

将一输入端口赋值给一个寄存器,再将该寄存器赋值给一个wire型输出端口,则在综合后,输入不会赋值给输出,注意上面的输入输出指的是整个工程的输入输出解决办法:给输入添加一个ibuf,或者给输出添加一个obuf

有时不必延迟一个时钟周期,而直接将输入赋值给输出

17.时序约束问题

○1寄存器到寄存器:过周期约束来设置,一般为实际时钟频率的110%;

○2输入管脚到寄存器:通过offset in来设置,一般为半个时钟周期;

由于上游芯片的数据输出和该FPGA的数据输入使用的是同一个时钟,故如果上游芯片的数据输出采用下降沿,那么FPGA的offset in就需采用上升沿;

上游芯片的输出到FPGA寄存器之间的延迟可能不到半个周期;

○3寄存器到输出管脚:参考○2

18.系统同步接口和源同步接口的区别

○1系统同步接口:上游芯片发送数据的时钟和FPGA接收数据的时钟均为系统时钟,或者FPGA发送数据的时钟和下游芯片接收数据的时钟均为系统时钟;

○2源同步接口:上游芯片发送数据给FPGA的同时,也发送接收时钟给FPGA,或者FPGA 发送数据给下游芯片的同时,也发送接收时钟给下游芯片。

19.在为寄存器分配地址时,常表示为0x…,这样也表示是十六进制!

20.FPGA设计面积与速度

面积指设计所占用的FPGA逻辑资源数目,即触发器FF和查找表LUT的数目

相关文档
最新文档