位置:51电子网 » 技术资料 » EDA/PLD

Verilog HDL混合设计描述方式

发布时间:2008/5/28 0:00:00 访问次数:438

在模块中,结构的和行为的结构可以自由混合。也就是说,模块描述中可以包含实例化的门、模块实例化语句、连续赋值语句以及always语句和initial语句的混合。它们之间可以相互包含。来自always语句和initial语句(切记只有寄存器类型数据可以在这两种语句中赋值)的值能够驱动门或开关,而来自于门或连续赋值语句(只能驱动线网)的值能够反过来用于触发always语句和initial语句。
  下面是混合设计方式的1位全加器实例。

module fa_mix (a, b, cin, sum, cout);
input a,b, cin;
output sum, cout;
reg cout;
reg t1, t2, t3;
wire s1;

xor x1(s1, a, b); // 门实例语句。

always
@ ( a or b or cin ) begin // always 语句。
t1 = a & cin;
t2 = b & cin;
t3 = a & b;
cout = (t1 t2) t3;
end

assign sum = s1 ^ cin; // 连续赋值语句。
endmodule

  只要a或b上有事件发生,门实例语句即被执行。只要a、b或cin上有事件发生,就执行always 语句,并且只要s1或cin上有事件发生,就执行连续赋值语句。


在模块中,结构的和行为的结构可以自由混合。也就是说,模块描述中可以包含实例化的门、模块实例化语句、连续赋值语句以及always语句和initial语句的混合。它们之间可以相互包含。来自always语句和initial语句(切记只有寄存器类型数据可以在这两种语句中赋值)的值能够驱动门或开关,而来自于门或连续赋值语句(只能驱动线网)的值能够反过来用于触发always语句和initial语句。
  下面是混合设计方式的1位全加器实例。

module fa_mix (a, b, cin, sum, cout);
input a,b, cin;
output sum, cout;
reg cout;
reg t1, t2, t3;
wire s1;

xor x1(s1, a, b); // 门实例语句。

always
@ ( a or b or cin ) begin // always 语句。
t1 = a & cin;
t2 = b & cin;
t3 = a & b;
cout = (t1 t2) t3;
end

assign sum = s1 ^ cin; // 连续赋值语句。
endmodule

  只要a或b上有事件发生,门实例语句即被执行。只要a、b或cin上有事件发生,就执行always 语句,并且只要s1或cin上有事件发生,就执行连续赋值语句。


相关IC型号

热门点击

 

推荐技术资料

声道前级设计特点
    与通常的Hi-Fi前级不同,EP9307-CRZ这台分... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!