博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
verilog学习笔记(加法器)
阅读量:5763 次
发布时间:2019-06-18

本文共 1591 字,大约阅读时间需要 5 分钟。

编程语言,光看书其实作用不大的,关键还需要自己进行实践。看书的时候,你觉得自己明白了、弄懂了,等到用modelsim实践的时候还是会出现这样那样的问题。因此,还是希望自己能够不断地训练和练习,这样可以达到熟能生巧的程度。就今天的加法器来说,其实内容还是比较简单的。主要就是数值和进位之间的关系。这些内容在计算机组成原理上面都会提到,关键是自己是否真正掌握。闲话不多说,可以编写一个verilog代码试试。

 

[cpp]   
 
  1. module add(a, b, in, c, out);  
  2.   
  3.     input a;  
  4.     input b;  
  5.     input in;  
  6.     output c;  
  7.     output out;  
  8.       
  9.     assign {out, c} = a + b + in;  
  10. endmodule  

    这里直接用数据流的形式解决。当然,大家可以根据自己的情况选择门电路编写也是可以的,毕竟条条大路通罗马嘛。不多说,继续编写testbench文件,

 

 

[cpp]   
 
  1. `timescale 1ns/1ns  
  2.   
  3. module count_t;  
  4.     
  5.   reg clk;  
  6.   reg a;  
  7.   reg b;  
  8.   reg in;  
  9.   wire c;  
  10.   wire out;  
  11.     
  12.   add process(a, b, in, c, out);  
  13.     
  14.   initial  
  15.       clk = 0;  
  16.   always    
  17.       forever  #5 clk = ~clk;  
  18.     
  19.   initial  
  20.   begin  
  21.         a = 0; b = 0; in = 0;  
  22.         #10  a = 0; b = 0; in = 1;  
  23.         #10  a = 0; b = 1; in = 0;  
  24.         #10  a = 0; b = 1; in = 1;  
  25.         #10  a = 1; b = 0; in = 0;  
  26.         #10  a = 1; b = 0; in = 1;  
  27.         #10  a = 1; b = 1; in = 0;  
  28.         #10  a = 1; b = 1; in = 1;  
  29.    
  30.  end     
  31.         
  32.   initial  
  33.   begin  
  34.       #200 $finish;  
  35.   end     
  36.         
  37.   initial  
  38.     $monitor(" out = %d, c = %d\n", out, c);  
  39.     
  40. endmodule  

    我们知道,两个数字相加,此时如果还有进位信息的话,那么就会出现8种情况。如果大家不觉得烦的话,可以把这8种情况都测试一遍。当然如果不想看波形,直接用minitor打印出来也是可以的。

测试模块用于检测模块设计是否正确。它给出模块的输入信号,观察模块的内部信号和输出信号,如果发现结果与预期有偏差,则需要对模块进行修改

综合就是把xxx.v文件送到综合器处理,在选定实现器件和选取生成Verilog网表的前提下,启动综合器的编译。综合器会自动生成一系列文件,向操作者报告综合的结果。其中生成的Verilog Netlist文件(扩展名为xxx.vm),表示自动生成的门级逻辑结构网表,仍然用Verilog语句表示,但是比输入的源文件更加具体,可以用测试模块调用它做同样的仿真,运行结果更接近实际器件

布局布线就是把综合后生成的另一种文件(EDIF),在不显工具控制下进行处理,启动布线工具的编译。布局布线工具会自动生成一系列文件,向操作者报告布局布线的结果。其中生成的Verilog Netlist文件(扩展名为xxx.vo),表示自动生成的具体基本门级结构和连接的延迟,仍然用了Verilog基本不见结构语句和连接线的延迟参数的重新定义表示,库中的基本部件也进一步具体化,比综合后的扩展名为xxx.vm的文件更具体。可以用同一个测试模块调用它做同样的仿真,运行结果与实际器件运行结果几乎完全一致。

学习网址:http://blog.csdn.net/feixiaoxing/article/details/8927675

转载于:https://www.cnblogs.com/ZZiz/p/6725140.html

你可能感兴趣的文章
【学习笔记】python2的print和python3的print()
查看>>
UVA 10462 Is There A Second Way Left?(次小生成树&Prim&Kruskal)题解
查看>>
Android Studio快捷键快速入门
查看>>
PHP打印金字塔---自己的实践练习题目
查看>>
vue.js学习笔记(二):如何加载本地json文件
查看>>
CRM系统如何帮助企业实现互联网+?
查看>>
CDH离线安装之安装包下载地址
查看>>
UITextView 添加 pleaceholder
查看>>
循环列表的实现
查看>>
年会,好不好?
查看>>
[工具]推荐一款查看dll依赖工具
查看>>
hoj1249 Optimal Array Multiplication Sequence
查看>>
[转载] 晓说——第30期:海上霸主航母(下)
查看>>
PBRT笔记(5)——相机模型
查看>>
HDOJ_ACM_悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
查看>>
Adobe Flash Builder 4.6 打开时提示Failed to create the Java Virtual Machine
查看>>
代码重构(五):继承关系重构规则
查看>>
网络协议——UDP协议
查看>>
php中的引用
查看>>
Json.net 忽略实体某些属性的序列化
查看>>