verilog学习心得.

发布时间 : 星期二 文章verilog学习心得.更新完毕开始阅读

仿真时,仿真器会将生成块中的代码展平,在确立后的方针代码中,生成变量是不存在的

最好是先想象出来循环生成语句被展平后的电路样子,再写相关的描述语句 task和function的区别:

task可以定义自己的仿真时间单位,function与主模块共用同一个仿真时间单位 函数不能启动任务,任务能够启动函数 函数至少要有一个输入变量,任务没有输入变量 函数返回一个值,任务不返回值

一个模块的设计包括3个部分:电路模块的设计测试模块的设计设计文档的编写

设计者通过布局布线工具生成具有布线延迟的电路,再进行后仿真,得到时序分析报告从时序分析报告中可以知道电路的实际延迟t,同步电路内每个时钟周期要大于t,从而可确定该运算逻辑的最高频率综合器之所以能够实现加法器、乘法器是因为库中已经存在可配置的参数化器件模型

FPGA内总线宽度容易自定义,以便实现高速数据流,三态数据总线相当于数据流的控制阀门数字系统内数据流的控制:开关(或三态数据总线、数据暂存部件(寄存器、同步状态机控制(整个系统在一个时钟域内

流水线操作pipe line:

K级流水线就是从组合逻辑的输入到输出恰好有K个寄存器组,上一级的输出是下一级的输入

流水线操作获得第一个结果的时间要比不用流水线操作的时间长,但以后结果获得时间都只需要一个时钟周期,提高了数据吞

吐量

流水线操作的保证:Tclk>K*(组合逻辑延迟+触发器的建立保持时间/触发时间,即时间片段要长于最大路径延迟

体现了面积换速度的思想,在综合时考虑的是以面积小为主还是以速度为主 本质上是一种同步逻辑 同步时序逻辑和异步时序逻辑:

同步时序逻辑指所有寄存器组由唯一时钟触发always@(posedge clk 或always@(negedage clk 异步时序逻辑指触发条件不唯一,任意一个条件都会引起触发always@(posedge clk or posedage reset

目前的综合器是以同步时序逻辑综合的,因为同步时序逻辑较异步时序逻辑可靠严格的同步要求时钟信号传递速度远远大于各部分的延迟,实际中clk要单独用线,而不要经过反相器等部件

always @(posedge.. begin ...<=... end 表示同步时序逻辑(同时刻赋值

不同速率数据接口的处理方法(异步数据的处理方法:帧同步FIFO 双端口RAM 同步状态机:

包括moore和mealy型两种,及其反馈模型(是一种反馈控制系统,当前状态就是其内部状态变量

状态机的开发步骤:

根据实际问题列出输入输出变量和状态数 画出状态图并化简

写出状态转移真值表得到逻辑表达式

用D触发器或JK触发器构建电路(目前用D触发器多 verilog描述时只需要得到简化的状态图就可以描述 状态编码方式:独热码格雷码

状态机主体程序有单always描述方式和多always描述方式

采用case/casez/casex建立模型最好,因为x是无关态,生成的电路最简单 default: state='bx与实际情况更一致,效果等同于default: state<=idle 只有同步状态机才能被目前的综合

for语句会将所有变量的情况展开,占用巨量逻辑资源,替代办法是用计数器和case语句说明所有情况

有优先级的if else结构会消耗更多资源,建议用无优先级的case替代 模块的复用往往比代码上修改节省的资源多 PLL的分频、倍频、移相操作会增加设计精度

同步时序电路的延时:#x通常用于仿真测试,实际硬件延时是:长延迟用计数器,小延迟用D触发器,此方法用来取代延迟链同步电路中,稳定的数据采用必须满足采样寄存器的建立和保持时间

reg类型在always中不一定综合成时序电路,也可能是组合逻辑电路 乒乓操作与作用异步时钟域同步问题 延迟包括门延迟和线延迟

组合逻辑产生的时钟仅能应用在时钟频率较低、精度要求不高的情况下 增减敏感信号得到的结果一样

补充部分:

verilog HDL起初是作为写testbench而产生的

verilog 有1995进入IEEE标准,为IEEE-1364, 于2001年进行了扩展,为IEEE 1364-2001;

verilog AMS可用于模拟电路和数字电路的综合,目前正在不断发展和完善中; verilog的标识符区分大小写,关键字使用小写; 用\\\\来进行单行注释,用\\* *\\来进行跨行注释; 标识符由字母、数字、下划线构成,并以字母开头; 关键字又叫保留字,只有小写的关键字才是保留字; 信号的状态有4种:0 1 x z

x和z在描述电路时不区分大小写,在仿真时大小写有不同意义; 常量表达式中: x z不区分大小写;

进制符号h o d b与H O D B不区分大小写; 十六进制中a~f不区分大小写; 下划线_用于提高可读性; ?在数中可以代替z; x和z的左端补位;

联系合同范文客服:xxxxx#qq.com(#替换为@)