资源描述:
《verilog硬件描述语言——012new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、下载第12章建模实例本章给出了一些用VerilogHDL编写的硬件建模实例。12.1简单元件建模连线是一种最基本的硬件单元。连线在VerilogHDL中可被建模为线网数据类型。考虑4位与门,其行为描述如下:`timescale1ns/1nsmoduleAnd4(A,B,C);input[3:0]B,C;output[3:0]A;assign#5A=B&C;endmodule&(与)逻辑的时延定义为5ns。这个模型代表的硬件如图12-1所示。门时延为5ns图12-1一个4位与门本实例和下面的实例表明布尔等式如何在连续赋值语句中被建模为表达式
2、。连线单元能被建模为线网数据类型。例如,在下面的描述中,F表示将~(非)操作符的输出连接到^(异或)操作符输入的线网。该模块表示的电路如图12-2所示。moduleBoolean_Ex(D,G,E,);inputG,E;outputD;wireF;图12-2组合电路assignF=~E;assignD=F^G;endmodule考虑下列行为和如图12-3所示相应硬件的表示。moduleAsynchronous;wireA,B,C,D;assignC=A|DassignA=~(B&C);endmodule图12-3异步反馈环路第12章建模实
3、例137下载该电路带有一个异步反馈环路。如果模型用特定的值集(B=1,D=0)仿真,仿真时间将由于仿真器总在两个赋值语句间迭代而永远停滞不前。迭代时间是两个零时延。因此,在使用带有零时延的连续赋值语句对线网赋值,以及在表达式中使用相同的线网值时,必须格外小心。在特定的情况下,有时需要使用这样的异步反馈。下面将演示一个这样的异步反馈;语句代表一个周期为20ns的周期性波形。其硬件表示如图12-4所示。注意这样的always语句需要一个initial语句将寄存器初始化为0或1,否则寄存器的值将固定在值x上。regAce;initialAce=
4、0;always图12-4时钟发生器#10Ace=~Ace;向量线网或向量寄存器型元件能被访问,既可以访问称为位选择的单个元素,也可以访问称为部分选择的片段。例如,regA;reg[0:4]C;reg[5:0]B,D;alwaysbegin...D[4:0]=B[5:1]
5、C;//D[4:0]和B[5:1]都是部分选择。D[5]=A&B[5];//D[5]和B[5]都是位选择。end第一个过程性赋值语句暗示着:D[4]=B[5]
6、C[0];D[3]=B[4]
7、C[1];...位选择、部分选择和向量可以并置,形成更大的向量。如,wire[7
8、:0]C,CC;wireCX;...assignC={CX,CC[6:0]};也可以引用索引值在运行时才可计算的向量元素。如:Adf=Plb[K];意味着解码器的输出为Adf,并且K指定选择地址。Plb是向量;本语句对解码器的行为建模。可以使用预定义的移位操作符执行移位操作。移位操作可以用合并操作符建模。例如,wire[0:7]A,Z;...assignZ={A[1:7],A[0]};//循环左移。assignZ={A[7],A[0:6]};//循环右移。assignZ={A[1:7],1'b0};//左移操作。向量的子域称为部分选择,也
9、能够在表达式中使用。例如,32位指令寄存器Instr_Reg中前16位表示地址,接下来8位表示操作码,余下的8位表示索引。给出如下说明:138VerilogHDL硬件描述语言下载reg[31:0]Memory[0:1023];wire[31:0]Instr_Reg;wire[15:0]Address;wire[7:0]Op_Code,Index;wire[0:9]Prog_Ctr;wireRead_Ctl;从Instr_Reg读取子域信息的一种方法是使用三个连续赋值语句。指令寄存器的部份选择被赋值给指定的线网。assignINstr_Re
10、g=Memory[Prog_Ctr];assignAddress=Instr_Reg[31:16];assignOp_Code=Instr_Reg[15:8];assignIndex=Instr_Reg[7:0];...always@(posedgeRead_Ctl)Task_Call(Address,Op_Code,Index);可用连续赋值语句为三态门的行为建模,如:wireTriout=Enable?TriIN:1'bz;当Enable为1时,TriOut获得TriIn的值。当Enable为0时,TriOut为高阻值。12.2建模的
11、不同方式本节给出了VerilogHDL语言提供的三种不同建模方式的实例:数据流方式、行为方式和结构方寄存器式。参看图12-5所示的电路,该电路将输入A的值存入寄存器,然后与输入C相乘。第一种建