Verilog HDL门级建模

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

⭐本专栏针对FPGA进行入门学习从数电中常见的逻辑代数讲起结合Verilog HDL语言学习与仿真主要对组合逻辑电路与时序逻辑电路进行分析与设计对状态机FSM进行剖析与建模。
🔥文章和代码已归档至【Github仓库hardware-tutorial】需要的朋友们自取。或者公众号【AIShareLab】回复 FPGA 也可获取。

基本概念

结构级建模: 就是根据逻辑电路的结构逻辑图实例引用Verilog HDL中内置的基本门级元件或者用户定义的元件或其他模块来描述结构图中的元件以及元件之间的连接关系。

门级建模: Verilog HDL中内置了12个基本门级元件Primitive有的翻译为“原语”模型引用这些基本门级元件对逻辑图进行描述也称为门级建模。

基本门级元件Primitive : 原语

  • 多输入门and、nand、or、nor、xor、xnor
    • 只有单个输出, 1个或多个输入
  • 多输出门not、buf
    • 允许有多个输出, 但只有一个输入
  • 三态门bufif0、bufif1、notif0、notif1
    • 有一个输出, 一个数据输入和一个控制输入
  • 上拉电阻pullup、下拉电阻pulldown

多输入门

多输入门的一般引用格式为

Gate_ name  <instance> (OutputA, Input1, Input2,…, InputN);

Gate_ name共6个 and、nand、or、nor、xor、xnor

特点

  • 只有1个输出,
  • 有多个输入。
原语名称图形符号逻辑表达式
and与门L = A & B
nand与非门L = ~(A & B)
or或门L = A | B
nor或非门L =~( A | B)
xor异或门L = A ^ B
xnor同或门L = A ~^ B

基本门的调用方法举例

and    A1outin1in2in3
xnor  NX1outin1in2in3in4 

对基本门级元件调用名A1、NX1可以省略。

若同一个基本门在当前模块中被调用多次可在一条调用语句中加以说明中间以逗号相隔。

and、nand真值表

and输入1输入1输入1输入1
01xz
输入200000
输入2101xx
输入2x0xxx
输入2z0xxx
nand输入1输入1输入1输入1
01xz
输入201111
输入2110xx
输入2x1xxx
输入2z1xxx

多输出门

允许有多个输出但只有一个输入。

buf  B1out1out2…in

buf真值表

not  N1out1out2…in

not真值表

三态门

有一个输出、一个数据输入和一个输入控制。如果输入控制信号无效则三态门的输出为高阻态z。

门级建模举例

2选1数据选择器

//Gate-level description
module _2to1muxtri (a,b,sel,out);
   input a,b,sel;
   output out;
   tri out;
   bufif1 (out,b,sel);
   bufif0 (out,a,sel);
 endmodule 

小结门级建模就是列出电路图结构中的元件并按网表连接 。

1位全加器

module addbit (a, b, ci, sum, co);           
input   a,  b,  ci;                           
output  sum,  co;                         
wire   a, b, ci, sum, co, n1, n2, n3; 
     xor   u0(n1, a, b)               
              u1(sum, n1, ci);            
     and   u2(n2, a, b)                  
              u3(n3, n1, ci);               
     or          (co, n2, n3);            

endmodule

若同一个基本门在当前模块中被调用多次可在一条调用语句中加以说明中间以逗号相隔。

门级描述小结

  1. 给电路图中的每个输入输出引脚赋以端口名。
  2. 给电路图中每条内部连线 取上各自的连线名。
  3. 给电路图中的每个逻辑元件取一个编号 (即“调用名”)。
  4. 给所要描述的这个电路模块确定一个模块名。
  5. 用module定义相应模块名的结构描述,并将逻辑图中所有的输入输出端口名列入端口名表项中,再完成对各端口的输入输出类型说明。
  6. 依照电路图中的连接关系,确定各单元之间端口信号的连接,完成对电路图内部的结构描述。
  7. 最后用endmodule结束模块描述全过程。

参考文献

  1. Verilog HDL与FPGA数字系统设计罗杰机械工业出版社2015年04月
  2. Verilog HDL与CPLD/FPGA项目开发教程(第2版), 聂章龙, 机械工业出版社, 2015年12月
  3. Verilog HDL数字设计与综合(第2版), Samir Palnitkar著夏宇闻等译, 电子工业出版社, 2015年08月
  4. Verilog HDL入门(第3版), J. BHASKER 著 夏宇闻甘伟 译, 北京航空航天大学出版社, 2019年03月

欢迎公众号【AIShareLab】一起交流更多相关知识前沿算法Paper解读项目源码面经总结。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6