其他分享
首页 > 其他分享> > Verilog标准手册阅读笔记

Verilog标准手册阅读笔记

作者:互联网

引言

该文章不适用于Verilog入学

Verilog标准手册下载地址:
Verilog标准手册

简介

基本元件模块:逻辑门和用户定义的原语模块(UDPs)

NET:表示电路连线或是总线的网络

寄存器:可以作为输入信号连接到某个具体模块的输入口

模块中每个initialalways连续赋值assignUDP各种逻辑门结构块都是并行执行

代码编写标准

语汇代码

目的: 提高可读性和可维护性

要求:

可综合代码

目的: 避免不可综合

要求:

在无时钟的always块中,由于有的输出变量被赋了某个信号变量值,而该信号变量没在该always块的电平敏感控制事件中列出,这会在综合中生成不想要的锁存器。

在时钟沿触发的always 块中,用非阻塞的赋值语句对寄存器类型的变量赋值,综合后就会生成触发器;或者当寄存器类型的变量在时钟沿触发的always 块中经过多次循环它的值仍保持不变,综合后也会生成触发器。

设计流程

1. 系统分析
2. 系统划分
  2.1 顶级模块
  2.2 模块大小估计
  2.3 预布局
3. 模块级设计
  3.1 编写RTL级Verilog
  3.2 综合代码检查
  3.3 写Verilog测试文件
  3.4 Verilog仿真
  3.5 写综合约束,边界条件,层次
  3.6 预综合以分析门的数量和延时
4. 芯片综合
  4.1 写Verilog测试文件
  4.2 Verilog仿真
  4.3 综合
  4.4 门级仿真
5. 测试
6. 布局布线
7. 布局布线后的仿真测试

Verilog使用注意事项

always声明语句

always @(inputs) begin
    //组合逻辑
end

注意事项:

assign 连续赋值声明语句

当表达式中NET或寄存器类型变量的值发生变化时,使用assign可以在一个或更多的电路连接中创建事件

wire cout,cin;
wire[31:0] sum,a,b;
assign {cout,sum}=a+b+cin;

注意事项:

begin声明语句

case声明语句

标签:语句,always,笔记,手册,Verilog,模块,寄存器,赋值
来源: https://www.cnblogs.com/csycmcc8023/p/16408312.html