FPGA知识杂记

1、关于GSR和PUR (芯片工作时产生的两个内部信号)

   PUR:Power Up Reset 上电复位信号
   GSR:Global Set/Reset 接入全局复位/置位信号

PUR PUR_INST   (.PUR(1'b1));
GSR GSR_INST   (.GSR(1'b1));

2、FPGA中的lut

可编程逻辑单元两种最基本的部件:触发器和查找表(LUT);

lut定义: LUT(look up table)查找表:原理类似于ROM,将lut的输入当作地址去lut预存      的内容(真值表)进行寻址。

举例: 以一个三位lut为例,三位输入端口2^3=8种输入,所以可以将一个LUT3视为一个容量为8的ROM,其中存储的是8种不同的逻辑运算的结果,而不同的输入则组成了ROM的地址线。所以逻辑运算的实现实际上就是对LUT6的一个译码过程。
image

3、关于FPGA中的逻辑级数

逻辑级数(logic level):一个触发器到另一个触发器之间经过的组合逻辑器件。

vivado查看逻辑级数命令
PS:在tcl使用该命令之前应该先打开Open Implemented Design

  report_design_analysis -logic_level_distribution -logic_level_dist_paths           5000 -name design_analysis_prePlace

4、关于vivado的编译优化

 (1)(*ASYNC_REG = "TRUE"*)命令用于声明寄存器能够接收相对于时钟源的异步数据,或者说寄存器是一个同步链路上正在同步的寄存器。这条命令可以放在任何寄存器上,除了设置它的值为TRUE外还可以设置为FALSE.这样可以强制指定async_rst为异步时钟输入,防止综合器对打拍寄存器进行优化
举例(*ASYNC_REG = "TRUE"*) reg r_reg1, r_reg2;
   可以将两个寄存器(挨着)放在同一个CLB(可编程逻辑块)中。

5、突发传输(Burst)

突发传输: 可以理解为连续传输。是指在同一行中相邻的存储单元连续进行数据传输的方式,只要指定起始地址和突发长度(Burst lengths,可以理解为跨度),控制器就会依次自动对后面相同数量的存储单元进行读/写操作,而不需要控制器连续提供列地址。

例如:AXI总线、SDRAM、DDR中都会使用到。

6、掩码信号

举例: data : 32'habcd_efgh ;  掩码信号(低电平有效) : 4'b0111
    则data中的ab无效 后面的cd_efgh有效
PS:使用场景:AXI总线、SDRAM

7、联合VS_Code和notepad

PS:根据自己的安装目录修改即可

1、Vivado

notepad : A:/A_FPGA/Tool/Notepad/notepad++.exe [file name]
vs_code : A:/A_FPGA/Tool/VS_Code/Code.exe -g [file name]:[line number]

2、Quartus ll

notepad : "A:\A_FPGA\Tool\Notepad\notepad++.exe" -n%l %f
vs_code : "A:\A_FPGA\Tool\VS_Code\Code.exe" -r -g %f:%l

3、Modelsim

在modelsim环境中的命令行中输入以下命令即可

notepad :

第一步:proc external_editor {filename linenumber} { exec "A:/A_FPGA/Tool/Notepad/notepad++.exe" $filename }
第二步:set PrefSource(altEditor) external_editor

vs_code :

第一步:proc external_editor {filename linenumber} { exec "A:/A_FPGA/Tool/VS_Code/Code.exe" -g $filename:$linenumber}
第二步:set PrefSource(altEditor) external_editor

本篇博文为记录学习所用,大多资料来源于网络搜索,如有侵权,请联系作者。

posted @ 2023-02-14 22:27  anzg256  阅读(222)  评论(0编辑  收藏  举报