首页 > 其他 > 详细

2-2 描述风格

时间:2019-09-24 20:04:01      阅读:110      评论:0      收藏:0      [点我收藏+]

2-2-1 延时

  Verilog 的所有延时都是按时间单位来定义的,时间单位声明应该在模块声明之前。

‘timescale 1ns/100ps //延时时间单位1ns,时间精度100ps

2-2-2 描述风格

 

1、数据流描述----使用连续性赋值语句 assign

assign [delay] DEST = SRC;

*当右边的表达式的操作数无论何时发生变化,右边的表达式都会重新计算,并在指定延时后赋给左边的线网变量。

 1 ‘timescale 1ns/100ps
 2 module decoder_24(A, B, EN, Q);
 3     input A, B, EN;
 4     output [0:3] Q;
 5     wire Abar, Bbar;
 6     assign #1 Abar = ~A;
 7     assign #1 Bbar = ~B;
 8     assign #2 Q[0] = ~(Abar & Bbar & EN);
 9     assign #2 Q[1] = ~(Abar & B & EN);
10     assign #2 Q[2] = ~(A & Bbar & EN);
11     assign #2 Q[3] = ~(A & B & EN);
12 endmodule

2、行为描述----initial、always

(1)initiial: 只执行一次;

(2)always:总是在循环执行。

所有的initial和always语句都在0时刻并行执行。

 1 ‘timescale 1ns/100ps
 2 
 3 module adder1(a, b, cin, sum, cout);//一位全加器
 4     input a, b, cin;
 5     output sum, cout;
 6     
 7     always @(a or b or cin) begin
 8         sum <= (a^b)^cin;
 9         cout <= ((a&cin)|(b&cin)|(a&b));
10     end
11 endmodule
12 
13 
14 module test(lr ,rn); //initial示例
15     output reg lr, rn;
16     initial 
17         begin
18             lr = 0;
19             rn = 1;
20             lr = #5 1;
21             rn = #8 0;
22         end
23 endmodule

3、结构描述----基于逻辑门电路的设计风格

 1 //一位全加器
 2 
 3 module adder1(a, b, cin, sum, cout);
 4     input a, b, cin;
 5     output sum, cout;
 6     wire s1, t1, t2, t3;
 7     xor
 8         ux1(s1, a, b),
 9         ux2(sum, s1, cin);
10     and
11         tm1(t1, a, b),
12         tm2(t2, a, cin),
13         tm3(t3, b, cin);
14     or 
15         uo(cout, t1, t2, t3);
16 endmodule
17 
18 //四位全加器
19 
20 module Adder4(fa, fb, fcin, fsum, fcout);
21     parameter size = 3;
22     input [size : 0] fa, fb;
23     input fcin;
24     output [size : 0] fsum;
25     output fcout;
26     wire [size - 1 : 0] ftemp;
27     
28     adder1 //按对应端口名连接
29         ufa1(.a(fa[0]), .b(fb[0]), .cin(fcin),      .sum(fsum[0]), .cout(ftemp[0])),
30         //ufb1(fa[0], fb[0], fcin, fsum[0], ftemp[0]), //按端口顺序连接,下同
31         ufa2(.a(fa[1]), .b(fb[1]), .cin(ftemp[0]), .sum(fsum[1]), .cout(ftemp[1])),
32         ufa3(.a(fa[2]), .b(fb[2]), .cin(ftemp[1]), .sum(fsum[2]), .cout(ftemp[2])),
33         ufa4(.a(fa[3]), .b(fb[3]), .cin(ftemp[2]), .sum(fsum[3]), .cout(fcout));
34 endmodule

4、混合设计风格

在模块中,可混合使用前面三种设计风格,这样可以帮助我们更高效地进行设计开发,但要注意不同类型语句的语法使用规范。

2-2 描述风格

原文:https://www.cnblogs.com/vilicute/p/11579881.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!