
第02章-数据选择器的设计.ppt
28页第2章 数据选择器设计目录•2.1 2.1 项目需求分析项目需求分析•2.2 2.2 项目理论知识项目理论知识•2.3 2.3 项目设计项目设计•2.4 2.4 项目实施与调试项目实施与调试•2.5 2.5 项目总结与拓展项目总结与拓展2.1 2.1 项目需求分析项目需求分析设计一个简单的数据选择器模型设计一个简单的数据选择器模型, ,要求要求: :( (11) )使用3个拨码开关模块作为数据选择器输入使用3个拨码开关模块作为数据选择器输入: :2路数据输入和1路选择键2路数据输入和1路选择键; ;( (22) )使用1个使用1个LEDLED灯模块作为数据选择器输出灯模块作为数据选择器输出, ,指示指示数据选择结果数据选择结果; ;( (33) )通过选择键选择2路数据中的一个数据通过选择键选择2路数据中的一个数据, ,然后然后作为结果输出作为结果输出. .2.2 2.2 项目理论知识项目理论知识2.2.1 VerilogHDL2.2.1 VerilogHDL语言的简介语言的简介2.2.2 Verilog HDL2.2.2 Verilog HDL语言的基本组成语言的基本组成2.2.3 VerilogHDL2.2.3 VerilogHDL语言的语言语言的语言要素要素2.2.4 Verilog HDL2.2.4 Verilog HDL语言的描述语句语言的描述语句2.2.1 VerilogHDL2.2.1 VerilogHDL语言的简介语言的简介目前的数字电路设计在层次上可分成以下4个层次目前的数字电路设计在层次上可分成以下4个层次: :( (11) )算法级设计算法级设计: :用高级语言如用高级语言如C C语言及其他一些系统分语言及其他一些系统分析工具析工具( (如如MATLAB)MATLAB)从从系统系统的算法级方面对设计进行描述的算法级方面对设计进行描述. .算法级不需要包含时序信息算法级不需要包含时序信息. .( (22)RTL()RTL(寄存器传送寄存器传送) )级设计级设计: :用数据流在寄存器间传输用数据流在寄存器间传输的模式来对设计进行描述的模式来对设计进行描述. .( (33) )门级门级: :用逻辑级的与、或、非门等门级之间的连接用逻辑级的与、或、非门等门级之间的连接关系对设计进行描述关系对设计进行描述. .( (44) )开关级开关级: :用晶体管和寄存器及它们之间的连线关系用晶体管和寄存器及它们之间的连线关系来对设计进行描述来对设计进行描述. .2.2.1 VerilogHDL2.2.1 VerilogHDL语言的简介语言的简介一一、、VerilogHDLVerilogHDL语言的概念语言的概念VerilogHDLVerilogHDL是一种硬件描述语言是一种硬件描述语言, ,用于从算法级、用于从算法级、门级到开关级的多种抽象设计门级到开关级的多种抽象设计层次层次的数字系统建模的数字系统建模. .被建模的数字系统对象的复杂性可以介于简单的门被建模的数字系统对象的复杂性可以介于简单的门和完整的电子和完整的电子数字系统数字系统之间之间. .数字系统能够按层次数字系统能够按层次描述描述, ,并可在相同描述中显式地进行时序建模并可在相同描述中显式地进行时序建模. .2.2.1 2.2.1 VerilogHDLVerilogHDL语言的简介语言的简介二二、、VerilogHDLVerilogHDL语言的特点语言的特点•( (11) )可以采用三种不同方式或混合方式对设计可以采用三种不同方式或混合方式对设计建模建模: :–①①行为描述方式行为描述方式, ,使用过程化结构建模使用过程化结构建模; ;–②②数据流方式数据流方式, ,使用连续赋值语句方式建模使用连续赋值语句方式建模; ;–③③结构化方式结构化方式, ,使用门和模块实例语句描述建模使用门和模块实例语句描述建模. .•( (22)VerilogHDL)VerilogHDL中有两类数据类型中有两类数据类型: :–①①线网数据类型线网数据类型: :表示构件间的物理连线表示构件间的物理连线; ;–②②寄存器数据类型寄存器数据类型: :表示抽象的数据存储元件表示抽象的数据存储元件. .•( (33) )设计能够在多个层次上加以设计能够在多个层次上加以描述。
描述 2.2.2 2.2.2 Verilog HDLVerilog HDL语言的基本组成语言的基本组成一、模块的概念一、模块的概念数字电路可简单归纳为两种要素:数字电路可简单归纳为两种要素:((1)线是器件引脚之间的物理连线;)线是器件引脚之间的物理连线;((2)器件也可简单归纳为组合逻辑器件)器件也可简单归纳为组合逻辑器件(如与或非门如与或非门)和时序逻辑器件和时序逻辑器件(如寄存器、锁存器、如寄存器、锁存器、RAM 等等).一个数字系统:多个器件一个数字系统:多个器件+一定的连线关系一定的连线关系.Verilog HDL的建模:使用的建模:使用Verilog HDL语言对数字语言对数字电路的两种基本要素的特性及相互之间的关系进行描述电路的两种基本要素的特性及相互之间的关系进行描述的过程的过程.模块是模块是Verilog的基本描述单位的基本描述单位,用于描述某个设计的用于描述某个设计的功能或结构及其与其他模块通信的外部端口功能或结构及其与其他模块通信的外部端口.2.2.2 2.2.2 Verilog HDLVerilog HDL语言的基本组成语言的基本组成二、模块的基本结构二、模块的基本结构一个模块的结构描述位于一个模块的结构描述位于module和和endmodule语语句之间句之间,每个模块由两部分组成每个模块由两部分组成:(11)接口描述接口描述,即说明输入引脚和输出引脚即说明输入引脚和输出引脚;(22)逻辑功能描述逻辑功能描述,即定义输入是如何影响输出的即定义输入是如何影响输出的.2.2.2 2.2.2 Verilog HDLVerilog HDL语言的基本组成语言的基本组成1.模块声明1.模块声明模块声明包括模块名和输入模块声明包括模块名和输入/输出端口列表输出端口列表: module 模块名 模块名(输入输入/输出端口列表输出端口列表);输入输入/输出端口列表是模块对外的通信接口输出端口列表是模块对外的通信接口,多个端口名多个端口名之间用之间用“,”隔开隔开.2.端口声明语句块2.端口声明语句块端口声明语句块主要用于说明模块的端口类型和位宽端口声明语句块主要用于说明模块的端口类型和位宽.常见的端口类型分为常见的端口类型分为输入输入input、、输出输出output双向端口双向端口inout 端口类型端口类型[信号位宽-1信号位宽-1:00]端口名端口名;2.2.2 2.2.2 Verilog HDLVerilog HDL语言的基本组成语言的基本组成3.逻辑功能描述语句块3.逻辑功能描述语句块逻辑功能描述语句块主要用于正确定义和说明模块的逻逻辑功能描述语句块主要用于正确定义和说明模块的逻辑功能辑功能.也就是定义输入如何影响输出也就是定义输入如何影响输出.(11)结构描述方式结构描述方式(调用库文件调用库文件)(22) 数据流描述方式数据流描述方式(使用连续赋值语句使用连续赋值语句assign)(33)行为描述方式行为描述方式(使用使用always过程块过程块)2.2.3 2.2.3 VerilogHDLVerilogHDL语言的语言语言的语言要素要素一、标识符一、标识符标识符用于表示电路系统中的模块、寄存器、输入标识符用于表示电路系统中的模块、寄存器、输入/ /输输出端口、连线等物理对象的名称出端口、连线等物理对象的名称. .标识符可以是字母、数字和下划线等符号组成的任意序标识符可以是字母、数字和下划线等符号组成的任意序列列. .定义标识符时应遵循以下规则定义标识符时应遵循以下规则: :( (11) )首字符不能是数字首字符不能是数字; ;( (22) )字符数不能超过1024个字符数不能超过1024个; ;( (33) )大小写字母是不同的大小写字母是不同的; ;( (44) )不能与关键字不能与关键字( (保留字保留字) )同名同名. .VerilogHDLVerilogHDL允许使用转义标识符允许使用转义标识符. .2.2.3 2.2.3 VerilogHDLVerilogHDL语言的语言语言的语言要素要素二、数据类型二、数据类型用硬件描述语言设计的电路模块所处理的数据就是用硬件描述语言设计的电路模块所处理的数据就是实际电路中的物理连线、实际电路中的物理连线、存储单元存储单元中的逻辑值中的逻辑值. . 11.常 量.常 量在程序运行的过程中在程序运行的过程中, ,其值不能被改变的量称为常量其值不能被改变的量称为常量. .( (11) )整数型数据整数型数据. . 二进制二进制整数整数、十进制、十进制整数、十六整数、十六进制整数和八进制整数进制整数和八进制整数. .<符号位> <位宽><符号位> <位宽>′ ′ <进制符号><进制符号> <<数值>数值> 8 8′b′b11001011 11001011 2.2.3 2.2.3 VerilogHDLVerilogHDL语言的语言语言的语言要素要素( (22) )实数型实数型数据数据: :①①十进制方式十进制方式: :例如例如33.2.244②②指数方式指数方式: :例如例如100000.0100000.0表示为表示为1.0E51.0E5( (33) )字符型数据字符型数据. .字符串用双引号括起来的字符序列字符串用双引号括起来的字符序列, ,例如例如““HelloWorldHelloWorld! !””. .( (44) )参数型数据参数型数据. .用用parameterparameter定义一个标识符来代表一个常定义一个标识符来代表一个常量量, ,称为符号常量称为符号常量, ,即标识符即标识符形式的常量形式的常量, ,采用标识符代表一采用标识符代表一个常量可提高程序的可读性和可维护性个常量可提高程序的可读性和可维护性. .参数参数型数据型数据常用于常用于定义延迟时间和变量宽度定义延迟时间和变量宽度. .其格式如下其格式如下: : parameter parameter 参数参数名名1 1=表达式=表达式1,1,…………, ,参数名参数名n n=表达式=表达式n;n;2.2.3 2.2.3 VerilogHDLVerilogHDL语言的语言语言的语言要素要素2.变 量2.变 量变量是指程序运行过程中其值可以改变的变量是指程序运行过程中其值可以改变的量量。
1)wire(1)wire型型. .相当于相当于组合逻辑电路中的各种组合逻辑电路中的各种连接线连接线: : wire[nwire[n-1-1: :00] ]数据1数据1, ,数据2数据2, ,…………, ,数据数据i;i;////定义了定义了i i 个个n n 位的位的wirewire型变量型变量, ,共有共有i i 条总线条总线, ,每条总线内有每条总线内有n n 条条线路线路( (22)reg)reg型型. . 一一种暂存数据的种暂存数据的变量变量. . reg[nreg[n-1-1: :00] ]数据名1数据名1, ,数据名2数据名2, ,…………, ,数据名数据名i;i;////定义了定义了i i 个个n n 位的位的regreg型变量型变量, ,共有共有i i 个寄存器个寄存器, ,每个寄存器都是每个寄存器都是n n 位位( (33)memory)memory型型. .对对regreg型变量建立数组来对存储器建模型变量建立数组来对存储器建模, ,可可以描述以描述RAM RAM 型存储器、型存储器、ROM ROM 型存储器和型存储器和regreg文件文件. . reg[nreg[n-1-1: :00] ]存储器名存储器名[m [m -1-1: :00];];////定义一个定义一个m m ××n n 的存储器的存储器, ,存储器的存储单元是一个存储器的存储单元是一个n n 位寄存器位寄存器, ,共有共有m m 个存储单元个存储单元2.2.3 2.2.3 VerilogHDLVerilogHDL语言的语言语言的语言要素要素三、运算符和三、运算符和表达式表达式1.算术运算符: 1.算术运算符: +、-、+、-、∗ ∗、、/ /、%、%2.位2.位运算符:运算符:~ ~ 、、& &、、| |、、^ ^、、^~ ^~ 3.逻辑运算3.逻辑运算符:符:&&(&&(逻辑与逻辑与) )、、||(||(逻辑或逻辑或) )、、! (! (逻辑非逻辑非) )4.关系运算符:4.关系运算符:>、<、>=、<=>、<、>=、<=5.等式运算符:5.等式运算符:==、==、! ! =、===、=、===、! ! ====6.移位运算符:<<6.移位运算符:<<( (左移位左移位运算运算) )、>>、>>( (右移位右移位运算运算) )7.条件7.条件运算符:运算符:? :? :8.位拼接8.位拼接运算符:运算符:{}{}9.缩减9.缩减运算符:运算符:, , & &、、~ &~ &、、| |、、~|~|、、^ ^、、^~^~2.2.4 2.2.4 Verilog HDLVerilog HDL语言的描述语句语言的描述语句一、赋值一、赋值语句语句1.非阻塞赋值(1.非阻塞赋值(Non_blockingNon_blocking):):c c<=<=a;a;2.阻塞赋值(2.阻塞赋值(BlockingBlocking):):c c==a a; ;二二、块、块语句语句1.顺序语句块(1.顺序语句块(beginbegin……endend))2.并行语句块(2.并行语句块(forkfork……joinjoin))三、条件三、条件语句语句1.1.ifif条件条件语句语句2.2.casecase条件条件语句语句2.2.4 2.2.4 Verilog HDLVerilog HDL语言的描述语句语言的描述语句四四、循环、循环语句语句1.1.foreverforever语句语句2.2.repeatrepeat语句语句3.3.whilewhile语句语句4.4.forfor语句语句五、结构说明五、结构说明语句语句1.1.initialinitial语句语句2.2.alwaysalways语句语句3.3.tasktask语句语句4.4.functionfunction语句语句2.3 2.3 项目项目设计设计•2.3.1 2.3.1 项目项目功能分析功能分析•2.3.2 2.3.2 项目硬件设计项目硬件设计•2.3.3 2.3.3 项目软件设计项目软件设计2.3.1 2.3.1 项目功能分析项目功能分析2.3.2 2.3.2 项目项目硬件设计硬件设计2.3.3 2.3.3 项目项目软件设计软件设计( (11) )结构描述结构描述方式方式( (22) )数据流描述数据流描述方式方式( (33) )行为描述方式行为描述方式2.4 2.4 项目项目实施与调试实施与调试•2.4.1 2.4.1 项目项目实施实施•2.4.2 2.4.2 项目调试项目调试2.4.1 2.4.1 项目实施项目实施一、设计一、设计输入输入1.建立1.建立工程工程2.建立设计2.建立设计文件文件二、设计二、设计处理处理三、设计三、设计校验校验四、器件编程四、器件编程2.4.2 2.4.2 项目调试项目调试一、电路调试一、电路调试拨动拨码开关拨动拨码开关, ,查看发光二极管的亮灭情况查看发光二极管的亮灭情况, ,看看是否符合选择器的逻辑要求和设计要求是否符合选择器的逻辑要求和设计要求. .二、故障现象与分析二、故障现象与分析( (11) )设置输入端口所连接的拨码开关设置输入端口所连接的拨码开关, ,拨动选择拨动选择功能拨码开关功能拨码开关, ,但但LED LED 灯不变化灯不变化: :引引脚没有分配好脚没有分配好, ,需检查重新分配引脚需检查重新分配引脚. .( (22) )设置输入端口所连接的拨码开关设置输入端口所连接的拨码开关, ,拨动选择拨动选择功能拨码开关功能拨码开关, ,但但LEDLED灯亮灭情况错灯亮灭情况错误误: :电路设计逻辑有错误电路设计逻辑有错误, ,需检查纠正错误需检查纠正错误. .2.5 2.5 项目项目总结与拓展总结与拓展•2.5.1 2.5.1 项目项目总结总结•2.5.2 2.5.2 项目拓展项目拓展2.5.1 2.5.1 项目总结项目总结1.掌握1.掌握VerilogHDLVerilogHDL语言的基本组成语言的基本组成2.掌握2.掌握VerilogHDLVerilogHDL语言的数据类型、运算符和表达式语言的数据类型、运算符和表达式3.掌握3.掌握VerilogHDLVerilogHDL语言的赋值语句、块语言的赋值语句、块语句语句4.掌握4.掌握VerilogHDLVerilogHDL语言的条件语句、循环语句和结构语言的条件语句、循环语句和结构说明语句说明语句2.5.2 2.5.2 项目拓展项目拓展1.采用1.采用VerilogHDLVerilogHDL语言文本输入法语言文本输入法, ,设计实现一个4位2路数据选择器设计实现一个4位2路数据选择器. .要求要求: :使用3种逻辑功能描述方法进行描述使用3种逻辑功能描述方法进行描述. .2.采用2.采用VerilogHDLVerilogHDL语言文本输入法语言文本输入法, ,设计实现一个8位4路数据选择器设计实现一个8位4路数据选择器. .要求要求: :使用3种逻辑功能描述方法进行描述使用3种逻辑功能描述方法进行描述. .3.采用3.采用VerilogHDLVerilogHDL语言文本输入法语言文本输入法, ,设计实现一个8位全加器设计实现一个8位全加器. .要求要求: :使用3种逻辑功能描述方法进行描述使用3种逻辑功能描述方法进行描述. .4.采用原理图输入法4.采用原理图输入法, ,设计实现3G8译码器设计实现3G8译码器. .5.采用5.采用VerilogHDLVerilogHDL语言输入法语言输入法, ,设计实现3G8译码器设计实现3G8译码器. .要求要求: :使用3种逻辑功能描述方法进行描述使用3种逻辑功能描述方法进行描述. .。
