预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共43页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

VerilogHDL语言(一)VerilogHDL语言的定义、特点及相关历史 VerilogHDL语言的模块介绍 VerilogHDL语言的数据类型 VerilogHDL语言运算符号及表达式 附录:QuartusII的使用及VerilogHDL文件的编写VerilogHDL是硬件描述语言的一种,用于数字电子系统设计。设计者可用它进行各种级别的逻辑设计,可用它进行数字逻辑系统的仿真验证、时序分析、逻辑综合。它是目前应用最广泛的一种硬件描述语言。VerilogHDL的历史介绍1、既能电路设计的综合,又可用于模拟仿真。 2、能够在多个层次上对所设计的系统加以描述,从开关级、门级、寄存器传输级(RTL)到行为级等;语言不对设计的规模施加任何限制。 3、灵活多样的电路描述风格,可进行行为描述,也可进行结构描述或数据流描述;支持混合建模在一个设计中各个模块可以在不同的设计层次上建模和描述。VerilogHDL的行为描述语句,如条件语句、赋值语句和循环语句等,类似于软件高级语言,便于学习和使用。 内置各种基本逻辑门,如and、or和nand等,可方便地进行门级结构描述;内置开关级元件,如pmos、nmos和cmos等,可进行开关级的建模。 用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑,也可以是时序逻辑;可通过编程语言接口(PLI)机制进一步扩展VerilogHDL语言的描述能力。用Verilog语言描述的电路设计就是该电路的VerilogHDL模型,也就称作模块。 Verilog模型可以是实际电路的不同级别的抽象。这些抽象一共分为5种: 系统级、算法级、RTL级、门级、开关级包括模块名字,模块输入、输出端口列表 module模块名(口1、口2,……); …… endmodule 模块的端口表示的是模块的输入还是输出口名,也就是说它与别的模块联系端口的标识。I/O说明的格式 输入口:input[信号位宽-1:0]端口名1; input[信号位宽-1:0]端口名2; … input[信号位宽-1:0]端口名i;(共有i个输入口) 输出口:output[信号位宽-1:0]端口名1; output[信号位宽-1:0]端口名2; … output[信号位宽-1:0]端口名j;(共有j个输出口)I/O说明的格式 输入/输出口:inout[信号位宽-1:0]端口名1; inout[信号位宽-1:0]端口名2; … inout[信号位宽-1:0]端口名k; I/O口也可以定义在端口声明语句里。如: modulemodule_name(inputport1,output port1,…inoutport1)内部信号的说明 在模块内用到的和与端口有关的wire和reg类型变量的声明。 如:reg[width-1:0]R变量1,R变量2…; wire[width-1:0]W变量1,W变量2…; 功能定义 模块中最重要的部分是逻辑功能定义部分。有3种方法可在模块中产生逻辑。 1)用“assign”声明语句 如:assigna=b&c; 2)用实例元件 如:and#2u1(q,a,b); 这个表达式表示调用跟与门一样的名为u1的与门,其输入为a、b,输出为q。输入延迟为2个时间单位。模块中每个具体化后的实例元件的名字是唯一的,以免和其它的与门混淆。 3)用“always”块 如:always@(posedgeclkorposedgeclr) begin if(clr)q<=0; elseif(en)q<=d; end 注意:这里<=不是小于等于,而是一种赋值运算符,在后面会讲到例:“与-或-非”门电路 moduleAOI(A,B,C,D,F);//模块名为AOI(端口列表为 A,B,C,D,F) inputA,B,C,D;//模块的输入端口为A,B,C,D outputF;//模块的输出端口为F wireA,B,C,D,F;//定义信号的数据类型 assignF=~((A&B)|(~(C&D)));//逻辑功能描述 endmodule 常量 1、数字 (1)整数。 4’b1010;4’B1010;4’d10;4’Ha;4’o12 数字表达方式有3种: (a)<位宽><进制><数字>,全面的描述 例:一个4位二进制数的位宽为4,一个4位十六进制数的位宽为16。 8’b10101100//位宽为8的数的二进制表示,b表示二进制 //位宽为8的数的十六进制表示,h表示十六进制 (b)在<进制><数字>中,数字的位宽采用缺省位宽32 ’b10101100;’ha2 (c)在<数字>这种描述方式中,采用缺省进制(十进制) 58,默认十进制,位宽32; 常量 (2)x和z值。 在数字电路中,x表示不定值,z表示高阻值。x可以用来定义十六进制数