Veriog_Notes_Chapter 2
来源:互联网 发布:遗传算法 交叉概率 编辑:程序博客网 时间:2024/06/09 16:35
第二章(模块和测试平台概念)
- 行为描述语言(system or RTL or algorithm)的功能:并行或顺序、可控延时、可命名事件触发其他过程中的激活或停止、循环结构、可带参数且非零延续时间的task程序结构、函数function、算数,逻辑,位运算符。
程序基本概念 测试平台
利用上升沿和下降沿来实现奇数倍分频
module Clk_divided( sys_clk, clk_out );// parameter parameter M = 5; parameter N = 3;// IO declaration input sys_clk; output clk_out;// intern signal definationreg div1; reg div2;reg [N-1:0] cnt1; reg [N-1:0] cnt2;// function definationalways@(posedge sys_clk) begin if(cnt1==M-1) begin cnt1 <= 2'b0;end else begin cnt1 <= cnt1+2'b1;end if(cnt1==2'b0) begin div1<=1; end if(cnt1==(M-1)/2) begin div1<=0; end endalways@(negedge sys_clk) begin if(cnt2==M-1) begin cnt2 <= 2'b0; end else begin cnt2 <= cnt2+2'b1; end if(cnt2==2'b0) begin div2<=1;end if(cnt2==(M-1)/2) begin div2<=0; end endassign clk_out = div1||div2; 50% clk_5//assign clk_out = div1&&div2; 25% clk_5Endmodule module Clk_divided_tb(sys_clk,clk_out);reg sys_clk ; wire clk_out;clk_divided uut( .sys_clk(sys_clk), .clk_out(clk_out));initial beginsys_clk = 0;# 100; endalways #100 sys_clk =~sys_clk;
- endmodule分上升沿和下降沿记奇数个数并分别翻转。例如上升沿计数5个后翻转div1,下降沿计数5个后翻转
div2,div1比div2提前半个时钟周期,最后将div1与div2按位或并赋值给clk_out即得到最5分频后的时钟。
时钟周期200ns,分频后为1us。占空比50%
时钟周期200ns,分频后为1us。占空比25%
思考:非整数倍分频实现思路1、在奇数倍分频的基础上进行2倍分频即可。
3、基本语法使用示例:一位全加器
A B C1(前一位进位) C2(加后进位) S(和)0 0 0 0 00 1 0 0 10 0 1 0 10 1 1 1 01 0 0 0 11 1 0 1 01 0 1 1 01 1 1 1 1
由此得Verilog程序如下所示:
input A,B,C1,sys_clk,sys_rst;output C2,S;reg sum;reg cout;initial begin sum = 2'b0;cout = 2'b0;end assign C2 = A^~B^~C1; //同或的使用assign S = (B&C1)+A&(B^~C1);Endmodulemodule full_adder_tb;reg A;reg B;reg C1; reg sys_clk;reg sys_rst;wire C2;wire S; full_adder uut ( .A(A), .B(B), .C1(C1), .C2(C2), .S(S), .sys_clk(sys_clk), .sys_rst(sys_rst) ); initial begin A = 0;B = 0;C1 = 0;sys_clk = 0; sys_rst = 0; #100; end always #100 sys_clk = ~sys_clk; always begin Fork //重复执行fork中的语句块 #100 begin A = 0; B = 1; C1 = 0; end #200 begin A = 0; B = 1; C1 = 1; end #300 begin A = 1; B = 0; C1 = 0; end #400 begin A = 1; B = 1; C1 = 1; end join end Endmodule
4、测试平台可在行为级(RTL仿真)和逻辑网表(逻辑网表仿真)和门级(门级仿真)结构中进行。其中门级结构加工艺技术再引入延迟模型称为布线后仿真,此时最接近实际电路。
5、initial只执行一次,而always总是在执行。
6、名词理解:synthesize 中(RTL原理图,语法查错,前综合后仿真(功能仿真))、implement中(translate将代码转换为具体的器件,map(器件布局可通过地域约束控制),布线(之后加入延迟信息))。
第三章
1.模块结构:模块端口定义,IO说明,内部信号说明,功能定义。
过程块都是并行执行(initial always)、连续赋值语句(assign)、实例引用语句。无关顺序
2.数据类型:(wire、reg、integer、parameter)最常用。Large medium scalered …16共16种
3.常量:数字,进制有关:注意负数写法:-30’d10、8’h4x(低四位不定)、8’b1100_0011(可读性)“AB”=16’B01000001_01000010 (字符串AB,值为16’h4142),长度默认是32位或64。
4.参数型:parameter average_delay=(r+f)/2 参数型在调用时具有很高的灵活性。定义延迟时间和位宽。
5.变量:网络类型的变量只能被驱动(门,连续赋值语句,assign)等,若无则为高组态。
6.Wire 常为单门驱动,而tri则是多驱动器是的网络数据。Wire或tri在逻辑强度不同时会产生不定值。Wire [N-1:0] a,b;
7.reg 常代表触发器,默认初始值为不定。Always中的每一个信号都必须为reg型。Reg[ N-1:0] a,b;可以正负值。当为操作数时其为无符号值,即当一个4为的寄存器值倍赋值为-1时,运算时将会被当作+15。
memory型即通过reg型建立数组建模,描述ram型存储器、rom储存器、reg文件。Reg[7:0] mema[255:0]; 256个八位储存器,寻址范围0到255。
对mema操作 必须指定位置。如mema[3]=0;
8.算术运算符(+,-, x,/,%)赋值运算(=,<=)关系运算符(<,>,<=,>=)逻辑运算符(&&,||,!)条件运算符(?:)位运算符(~,|,^,&,^~)移位运算符(<<,>>)拼接运算符({})%运算符最后去被除数符号:例如-10%3= -1;
Parameter在实例中的应用优势
module decode(a,f) Parameter width=1;polarity=1; ...endmodulemodule top;wire [3:0] a4;wire [4:0] a5;wire[15:0] f16;wire[31:0] f32;decode #(4,0) d1(a4,f16);decode #(5) d1(a5,f32);endmodule
d1得到了来自参数传递过来的值其此时的width和polarity分别为4,0而d2的为5和0。
不可综合条件:字符串$display,网络类型wire初始化,defparam,deassign,延时(#5),mos开关,双向传输开关,cmos门和电源上下拉,循环语句(forever,while)specify语句和自定义udp元件
一个模块中改变另一个模块中的参数值则需使用defparam命令。(不可综合)
‘include “top.v” ‘include “block.v”‘include “annotate.v”module test Wire w; top t();endmodulemodule top;wire w;block b1();block b2();endmodule module block; Parameter p=0;endmodulemodule annotate; defparam test.t.b1.p=2; test.t.b2.p=3;endmodule
- Veriog_Notes_Chapter 2
- Veriog_Notes_Chapter 1
- Veriog_Notes_Chapter 4
- Veriog_Notes_Chapter 6
- Veriog_Notes_Chapter 3
- Veriog_Notes_Chapter 5
- Veriog_Notes_Chapter 7
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- 2
- rdbms迁移到Impala2.0
- Linux系统调用
- IntelliJ IDEA 快捷键
- 共享一个以前写的俄罗斯方块
- js把日期字符串转换成时间戳
- Veriog_Notes_Chapter 2
- web实现验证码
- 《ASP.NET》数据绑定——GridView
- 整人之bat重启文件
- 泛型和枚举
- UVa 11361 Investigating Div-Sum Property 数字和与倍数
- 【C++系列】之 运算符重载
- hdu 2955 Robberies dp
- HDU 4824 双调旅行商问题