1、第四讲 基于HDL实现的基本门电路,主讲人:雷求胜,一、基于HDL实现的基本门电路的设计,1、新建工程 FileNew Project nand2_ex1 2、设计输入 a、File New Design Files Verilog HDL File OK b、输入程序代码 c、 File Save As nand2_ex1.v,程序代码,/2输入与非门电路 /nand2_ex1 module nand2_ex1( /定义2输入与非门电路模nand2_ex1 a, /模块的外部输入/输出端口列表 b, f): input a,b; /a、b为输入端口 ouput f; /f为输出端口 nand
2、 instl(f,a,b); /调用Verilog内部预定义的门级原语nand endmodle,3、工程编译,Processing Start Compilation 4、功能测试(波形仿真)新建波形文件添加输入输出端口设置输入信号波形功能仿真检验功能,二、HDL语言以及特点,HDL-Hardware Description Language(硬件描述语言) 常用的HDL:VHDL和Verilog VHDL-对电路行为描述能力很强,但语法繁琐、关键字比较长,初学者学习较困难。 Verilog-语法简单,入门容易,类似于C语言。,三、Verilog电路模块的一般结构,用Verilog HDL描
3、述的电路设计称为模块,也就是该电路的Verilog HDL模型。模块描述某个电路的功能或结构以及与其他模块通信的外部接口,是Verilog 的基本描述单位。用Verilog语言编写代码来设计一个电路的过程也就称为对电路建模的过程。,Verilog HDL模块的一般结构,模块声明 module 模块名(port1,port2,port3portn); 端口声明语句块 逻辑功能描述语句块 endmodule,1、模块声明,模块声明包括模块名字和模块输入输出列表,格式如下: module 模块(port1,port2,port3portn); 如: module nand2_ex1(a,b,f);
4、module mux2_1ex1(s,a,b,f);,2、端口声明语句,input 端口名1,端口名2;/声明输入端口 如:input a,b; /a、b为输入端口output 端口名1,端口名2;/声明输出端口 如:ouput f; /f为输出端口inout 端口名1,端口名2;/声明双向端口 如:inout w_r; /w_r为双向端口,3、逻辑功能描述语句,方法一:结构描述方式通过调用原语元件的方式来描述电路结构nand instl(f,a,b); 方法二:数据流描述方式assign f=(aassign 连续赋值语句的赋值操作符是普通的赋值操作符“=”,通过定义数据信号的“流程”来描述
5、模块,一旦其输入端发生变化,输出端随之而改变,因此用连续赋值语句描述模块逻辑功能的方式也称为数据流描述方式,一般用于组合逻辑功能描述。,3、逻辑功能描述语句,方法三:行为描述方式reg f;/关键字reg表示一种暂存的数据类型,说明输出信号F,需要在always语句块中得到赋值。always (a or b) /always过程语句f=(a,敏感信号表达式,四、标识符,标识符用于表示电路系统中模块、寄存器、输入/输出端口、连线等物理对象名字。 标识符可以是任意一组字母、数字以及符号“$”和下画线“_”的组合,但必须是字母和下画线开头。 标识符是区分大小写的。 如:reg_out,count,p0,f,F,ABC$, _M1_D1,8_data,*out, input,哪些标识符是合法的?,课堂练习,用三种方法描述2输入的或非门电路的Verilog代码 方法一:调用库元件的结构描述方式; 方法二:使用连续赋值语句“assign”的数据流描述方式; 方法三:使用always过程块行为描述方式。,