Verilog设计与验证 学习笔记一
第四章 RTL概念与RTL建模 安排常用的设计实例,对RTL建模有感性的认识
第五章 重点讨论RTL级的编码风格和各种设计原则
第六章 讨论RTL级设计的FSM(有限状态机)的描述技巧
第四章 RTL概念与RTL建模
主要内容如下:
RTL与综合的概念
RTL级设计的基本要素和步骤
常用的RTL级建模
实例
RTL和综合的概念
1.HDL语言的层次:
系统级(system level)
功能模块级(function model level)
行为级(behavior level)
寄存器传输级(RTL,Register Transfer Level)
门级(Gate Level)
2.RTL级概念:
不关注寄存器和组合逻辑的细节,
通过描述寄存器到寄存器之间的逻辑功能描述电路的HDL层次。
3.RTL级综合:
将RTL级源代码翻译并优化为门级网表
在可编程器件(PLD,主要是指FPGA和CPLD)设计领域,最重要的设计层次就是RTL级
RTL级设计的基本要素和步骤
1.典型的RTL级设计包含三部分:
时钟域描述
时序逻辑描述(寄存器描述):
根据时钟沿的变换,描述寄存器之间的数据传输方式
组合逻辑描述:
描述电平敏感信号的逻辑组合方式和逻辑功能
2.全局时钟资源的特点是几乎没有Clock Skew(时钟偏斜),有一定的Clock Delay(时钟延时);
第二全局时钟资源的特点是具有娇羞奥的Clock Skew和Clock Delay,时钟驱动能力较强。
3.RTL级代码的设计顺序
- 功能定义与模块划分
- 定义所有模块的接口
- 设计时钟域
- 考虑设计的关键路径
- 顶层设计
- FSM设计
- 时序逻辑设计
- 组合逻辑设计
4.设置异步复位信号
设置异步复位信号“reset_”为低有效信号(下降沿开始复位):
reg [3:0] cnt_reg;
always @ (posedge clock or negedge reset_)
if ( !reset_ )
cnt_reg<= 4'b0000;
else
begin
......
end
5.设置同步复位信号
always的敏感列表中仅有时钟沿信号,仅当时钟沿猜到同步复位的有效电平时,才会在时钟沿到达时刻进行复位/置位的操作。
reg [3:0] cnt_reg;
always @ (posedge clock)
if(!reset_)
cnt_reg <= 4'b0000;
else
begin
......
end
tips:
在时钟的上升沿和下降沿到达时