Verilog学习笔记(五)

Verilog的结构化描述形式

在VerilogHDL中可使用如下方式描述结构:
1)内置门原语(在门级);
2)开关级原语(在晶体管级);
3)用户定义的原语(在门级);
4)模块实例(创建层次结构)。

在这一实例中,模块包含门的实例语句,也就是说包含内置门xor、and和or的实例语句。门实例由线网类型变量S1、T1、T2和T3互连。由于没有指定的顺序,门实例语句可以以任何顺序出现;图中显示了纯结构;xor、and和or是内置门原语;X1、X2、A1等是实例名称。紧跟在每个门后的信号列表是它的互连;列表中的第一个是门输出,余下的是输入。例如,S1与xor门实例X1的输出连接,而A和B与实例X1的输入连接。
4位全加器可以使用4个1位全加器模块描述。下面是4位全加器的结构描述形式。

moduleFourBitFA(FA,FB,FCin,FSum,FCout); 

parameterSIZE=4;

input[SIZE:1]FA,FB;

output[SIZE:1]FSum

inputFCin;

inputFCout;

wire[1:SIZE-1]FTemp;

FA_Str

FA1(.A(FA[1]),.B(FB[1]),.Cin(FCin),

.Sum(FSum[1]),.Cout(FTemp[2])),

FA2(.A(FA[2]),.B(FB[2]),.Cin(FTemp[1]),

.Sum(FSum[2]),.Cout(FTemp[2])),

FA3(FA[3],FB[3],FTemp[2],FSum[3],FTemp[3],

FA4(FA[4],FB[4],FTemp[3],FSum[4],FCout);

endmodule


在这一实例中,模块实例用于建模4位全加器。在模块实例语句中,端口可以与名称或位置关联。前两个实例FA1和FA2使用命名关联方式,也就是说,端口的名称和它连接的线网被显式描述(每一个的形式都为“.port_name(net_name))。最后两个实例语句,实例FA3和FA4使用位置关联方式将端口与线网关联。这里关联的顺序很重要,例如,在实例FA4中,第一个FA[4]与FA_Str的端口A连接,第二个FB[4]与FA_Str的端口B连接,余下的由此类推。

Verilog-混合设计描述方式

在模块中,结构的和行为的结构可以自由混合。也就是说,模块描述中可以包含实例化的门、模块实例化语句、连续赋值语句以及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 语句,并且只要S 1或C i n上有事件发生,就执行连续赋值语句。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值