资源描述:
《verilog第二章简单的verilog模块》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第二讲Verilog语法的基本概念主要内容●Verilog建模概述●模块的基本概念简单示例模块特点模块结构模块语法●三种建模方式●模块的测试●有关VerilogHDL的几个重要基本概念VerilogHDL是一种用于数字逻辑电路设计的语言:-用VerilogHDL描述的电路设计就是该电路的VerilogHDL模型。-VerilogHDL既是一种行为描述的语言也是一种结构描述的语言。这也就是说,既可以用电路的功能描述也可以用元器件和它们之间的连接来建立所设计电路的VerilogHDL模型。Verilog模型可以是实际电路的不同级别的抽象。
2、这些抽象的级别和它们对应的模型类型共有以下五种:2.1Verilog的建模概述Verilog的建模级别1系统级(system):用高级语言结构实现设计模块的外部性能的模型.2算法级(algorithmic):用高级语言结构实现设计算法的模型,不包含时序信息。3RTL级(RegisterTransferLevel):描述数据在寄存器之间流动和如何控制这些数据的模型。4门级(gate-level):描述逻辑门以及逻辑门之间的连接的模型。5开关级(switch-level):描述器件中三极管和储存节点以及它们之间连接的模型。算法级是高级的建
3、模,一般对特大型设计或有较复杂的算法时使用,特别是通讯方面的一些系统,通过算法级的建模来保证设计的系统性能,在算法级通过后,再把算法级用RTL级进行描述,门级一般对小型设计时使用。开关级一般在版图级进行。可综合的VerilogHDL模型算法级(AlgorithmLevel)-部分可综合寄存器传输级(RegisterTransferLevel)-完全可综合门级(GateLevel)-完全可综合开关级(SwitchLevel)-用于基本逻辑器件仿真模型的建库Verilog的功能1可描述顺序执行或并行执行的程序结构。2用延迟表达式或事件表达
4、式来明确地控制过程的启动时间。3通过命名的事件来触发其它过程里的激活行为或停止行为。4提供了条件、if-else、case、循环程序结构。5提供了可带参数且非零延续时间的任务(task)程序结构。6提供了可定义新的操作符的函数结构(function)。7提供了用于建立表达式的算术运算符、逻辑运算符、位运算符。8VerilogHDL语言作为一种结构化的语言也非常适合于门级和开关级的模型设计。2.2模块的基本概念模块(module)是Verilog的基本描述单位,用于描述某个设计的功能或结构及与其他模块通信的外部端口。模块在概念上可等同一
5、个器件就如我们调用通用器件(与门、三态门等)或通用宏单元(计数器、ALU、CPU)等,因此,一个模块可在另一个模块中调用。一个电路设计可由多个模块组合而成,因此一个模块的设计只是一个系统设计中的某个层次设计,模块设计可采用多种建模方式。例2.1modulemuxtwo(out,a,b,sl);inputa,b,sl;outputout;regout;always@(sloraorb)if(!sl)out=a;elseout=b;endmodule例2.2modulemuxtwo(out,a,b,sl);inputa,b,sl;outp
6、utout;wirensl,sela,selb;assignnsl=~sl;assignsela=a&~nsl;assignselb=b&~nsl;assignout=sela
7、selb;endmodule例2.3modulemuxtwo(out,a,b,sl);inputa,b,sl;outputout;wirensl,sela,selb;notu1(nsl,sl);and#1u2(sela,a,nsl);and#1u3(selb,b,sl);or#1u4(out,sela,selb);endmodule/*一个名为adder的三位
8、加法器的例子。*/moduleadder(count,sum,a,b,cin);//模块定义开始input[2:0]a,b;//输入信号定义inputcin;//输出信号定义outputcount;//输出信号定义output[2:0]sum;//输出信号定义assign{count,sum}=a+b+cin;//模块功能描述endmodule//模块定义结束例2.4例2.5比较器modulecompare(equal,a,b);outputequal;//声明输出信号equalinput[1:0]a,b;//声明输入信号a,b/*如
9、果a、b两个输入信号相等,输出为1,否则为0*/assignequal=(a==b)?1:0;endmodule这个程序描述了一个比较器.在这个程序中,/*........*/和//.........表示注释部分,注释只