FPGA中的原语
FPGA中的原语(Language Templates)一、什么是原语二、原语讲解2.1 IBUFDS2.2 BUFGBUFG 是 Vivado 提供的 全局时钟缓冲器(Global Clock Buffer),它的作用是:
将一个普通时钟信号(如外部晶振输入)连接到 FPGA 内部的全局时钟网络(Global Clock Tree),保证整个 FPGA 芯片内部所有时序单元可以同步工作。
那为什么需要 BUFG?
FPGA 是一个时序电路,每个触发器、状态机、计数器等都依赖统一的全局时钟。
而从外部引脚进来的时钟(例如 PL_CLK_P/PL_CLK_N)只是普通信号:
没有经过专用时钟树缓冲;
无法直接驱动大量触发器;
会导致严重的时钟偏斜(clock skew);
Vivado 会报时钟相关的 Place & Route 错误或严重 timing violation;
使用BUFG的好处:
全局驱动:将时钟驱动到整个 FPGA 内部
消除时钟偏斜:所有逻辑单元同时接受一个“均衡”的时钟
必须走时钟树:Vivado 综合器只允许 BUFG 的输出进入 posedge ...
Vivado操作备注
Vivado操作备注Vivado操作界面
Vivado工程整体工作流程及其对应仿真Vivado一整个工程整体流程如下:
第一步
第二步
第三步
工程流程
写.v /.sv文件用于实现电路逻辑
Run Synthesis(综合)将代码转成门级网表
Run Implementation(实现) 将门级网表转成FPGA中的电路,即布局布线
功能仿真(不含延迟)
Run Behavioral Simulation(验证 RTL 原始功能)
Run Post-Synthesis Functional Simulation(验证综合后功能未改变—不带电路延迟)
Run Post-Implementation Functional(验证实现后功能未改变—不带电路延迟)
时序仿真(含延迟)
无(RTL 无延迟信息)
Run Post-Synthesis Timing Simulation(验证综合后是否满足时序—带电路延迟)
SimulationRun Post-lmplementation Timing Simulation(验证最终实现是否满足时序—带电路延迟)
...
Verilog语法整理
一、Verilog数据类型1.1 wire类型wire类型用于表示硬件电路单元之间的物理连线。
未声明的信号类型默认为wire
wire不允许在always块内部定义和赋值,但可以在always块使用非阻塞赋值<=取其数值
常用在always块外部用assign连续赋值(硬件相连)
eg:
1234567891011121314151617181920212223module d_flip_flop( //以D触发器为例,输出信号有reg,也有wire,以说明其赋值操作的区别 input wire clk, input wire rst_n, input wire D, //wire型输入 output reg Q_reg, //reg型输出 output reg Q_wire //wire型输出); reg Q_0= 1'd0; //定义内部变量 always@(posedge clk or negedge rst_n) begin if(!rst_n) begin //复位 Q_reg ...
Zotero使用攻略
Zotero是什么Zotero是针对科研人员的一款文献管理软件
为什么要用Zotero使用Zotero和多种多样的插件,可以实现99%中英文文献的保存、分类、查找、引用。
快速的保存中英文论文
在几百篇文献中快速定位自己想要的论文
写小论文与大论文时快速插入参考文献,对于中英文参考文献格式有几乎全覆盖的格式库,并且只需要改Zotero词条就可以做到修改参考文献引用内容
对论文的分类、IF排序、写简记、JCR分类
Zotero应用效果展示
保存文献(中文:知网/万方等 + 英文:google学术/webofscience/scihub等)1.1 保存中文文献:
1.2 保存英文文献:
快速筛选论文:
写小论文与大论文时快速插入参考文献3.1 word环境下引用+插入参考文献:
3.2 latex环境下引用+插入参考文献:
Zotero使用教程软件安装插件推荐与安装插入参考文献word环境latex环境