verilog硬件描述语言——012new

verilog硬件描述语言——012new

ID:34521158

大小:567.80 KB

页数:21页

时间:2019-03-07

verilog硬件描述语言——012new_第1页
verilog硬件描述语言——012new_第2页
verilog硬件描述语言——012new_第3页
verilog硬件描述语言——012new_第4页
verilog硬件描述语言——012new_第5页
资源描述:

《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相乘。第一种建

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。