版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第2章章 逻辑电路及逻辑电路及Verilog HDL简介简介目录2.1 基本逻辑门和常用逻辑门基本逻辑门和常用逻辑门2.2 用用Verilog HDL实现基本的逻辑操作实现基本的逻辑操作2.3 原理图输入法逻辑电路设计原理图输入法逻辑电路设计 2.4 三种风格的三种风格的Verilog HDL描述描述 2.5 常用的组合电路及其设计常用的组合电路及其设计2.6 时序电路的设计方法时序电路的设计方法算术运算和逻辑运算算术运算和逻辑运算 算术运算:算术运算:当二进制数表示不同大小的数当二进制数表示不同大小的数值时,数值与数值之间可以进行加、减、值时,数值与数值之间可以进行加、减、乘、除等运算,称
2、算术运算。乘、除等运算,称算术运算。 逻辑运算:逻辑运算:当二进制数表示不同状态的代当二进制数表示不同状态的代码时,代码与代码之间的运算是一种逻辑码时,代码与代码之间的运算是一种逻辑因果关系的运算,有与、或、非三种,称因果关系的运算,有与、或、非三种,称逻辑运算。逻辑运算。 这两种运算有本质的不同。这两种运算有本质的不同。算术运算加法 1 0 0 1 + 0 1 1 1 00010进位进位1进位进位1进位进位1进位进位12.1 基本逻辑门和常用逻辑门基本逻辑门和常用逻辑门 基本逻辑运算有逻辑与、逻辑或和逻辑非。实现这三种逻辑运算的电路,称作基本逻辑门。 1. 逻辑代数的三种基本运算模型逻辑代数
3、的三种基本运算模型 n“”表示表示“与运算与运算”或或“逻辑乘逻辑乘”,读作,读作“与与”或或“乘乘”,可省略不读。,可省略不读。n逻辑符号逻辑符号A B0 00 11 01 1Y0001 真值表真值表AB(a)YYAB(b)YAB&(c)n“+”表示表示“或运算或运算”或或“逻辑加逻辑加”,读作,读作“或或”或或“加加”。有有1出出1,全,全0出出0A B0 00 11 01 1Y0111真值表真值表n二进制运算和逻辑代数的区别: 二进制运算中的加法、乘法有进位问二进制运算中的加法、乘法有进位问题,题,1+1=10;但逻辑代数研究的是;但逻辑代数研究的是“0”、“1”两种逻辑状态的逻
4、辑加、逻辑乘、逻两种逻辑状态的逻辑加、逻辑乘、逻辑非,是一种逻辑运算,所以辑非,是一种逻辑运算,所以 n逻辑符号逻辑符号 ABY(c)1ABY(a)+ABY(b) 1 0 0 1 + 0 1 1 1 1111“”表示表示“非运算非运算”或或“逻辑非逻辑非”,读作,读作“非非”。n非运算的运算规则:n逻辑符号逻辑符号AY 10 01AA0 AA1 AAA01Y10真值表真值表AY1(c)AY(a)AY(b)基本逻辑门 2.1.2 基本逻辑符号基本逻辑符号 2.复合逻辑运算 与、或、非为三种基本逻辑运算。与、或、非为三种基本逻辑运算。 实际逻辑问题要比与、或、非复杂得多,实际逻辑问题要比与、或、非
5、复杂得多,但都可以用简单的与、或、非逻辑组合来但都可以用简单的与、或、非逻辑组合来实现。从而构成复合逻辑。实现。从而构成复合逻辑。 复合逻辑常见的有与非、或非、异或、同复合逻辑常见的有与非、或非、异或、同(或或)运算等。运算等。(1 1) 与非门与非门 与非运算的逻辑结论:有与非运算的逻辑结论:有0出出1,全,全1出出0。ABY (2 2) 或非门或非门 或非运算的逻辑结论或非运算的逻辑结论:有:有1出出0,全,全0出出1。BAY(3 3) 异或门异或门 逻辑关系是逻辑关系是: 相异出相异出1;相同出;相同出0 。逻辑结论:逻辑结论:AB时,时,Y=1;A=B时,时,Y=0。BABABAY(4
6、 4) 同或门同或门 异或运算和同或运算互为反函数即异或运算和同或运算互为反函数即 AB=ABAB=AB逻辑关系:逻辑关系:相同出相同出1;相异出;相异出0 。逻辑结论:逻辑结论: A=BA=B时时Y=1Y=1;ABAB时时Y=0Y=0。ABF BAFCDABFBABABAFBABAF=A B 逻辑符号如下图,其中第一行为逻辑符号如下图,其中第一行为IEEE84国国际标准符号;第二行为惯用符号;第三行为际标准符号;第二行为惯用符号;第三行为IEEE91国际标准符号。国际标准符号。公理3:公理4:公理5:3. 逻辑代数的运算规则一一. 基本公理基本公理公理1:设A为逻辑变量,若A0,则A1;若A
7、l,则A0。公理2:0 0 0 ; 1 1 11 1 1; 0 0 0 。0 1 0 ; 1 0 1 。 1 0 0 ; 0 1 1 。1001 二二. 基本定律基本定律4、互补律: 0 1AAAA分别令分别令A=0及及A=1代代入这些公式,即可证入这些公式,即可证明它们的正确性。明它们的正确性。1、0-1律: 00A 11A2、自等律: A1A A0A(20)6、交换律、交换律7、结合律、结合律8、分配律、分配律A+B=B+AA B=B AA+(B+C)=(A+B)+C=(A+C)+BA (B C)=(A B) CA(B+C)=A B+A CA+B C=(A+B)(A+C)普通代数普通代数不
8、适用不适用!三、德三、德 摩根定理摩根定理(反演律)反演律)(21)(De Morgan)证明:证明:真值表法、真值表法、穷举法穷举法推广到多变量:推广到多变量:CBACBA CBACBA 说明:两个(或两个以上)变量的说明:两个(或两个以上)变量的与非与非(或非或非)运算等于两个(或两个以上)变量的运算等于两个(或两个以上)变量的非或非或(非与非与)运算。运算。BABA 1BABA 2用真值表证明摩根定理成立用真值表证明摩根定理成立(22)A B=A+B A+B= A BA B0 00 11 01 1Y1=ABY2=A+B11101110相等相等AA100 A0 AAAAAABBAABAA)
9、(AA )()(CBACBAACABCBA)(BABA01AA 011A1 AAAAAABBAAABA)()(CBACBA)(CABABCABABA10 AA01 AA0 AAABBA)()(CBACBAACABCBA)(BABAABAA1=A B=自等律自等律说明说明公公 式式求反律求反律反演律反演律分配律分配律结合律结合律还原律还原律吸收律吸收律交换律交换律重叠律重叠律互补律互补律01律律(24)四种表示方法四种表示方法逻辑函数式逻辑函数式 (逻辑表示式逻辑表示式, 逻辑代数式逻辑代数式) 逻辑电路图逻辑电路图:卡诺图卡诺图n2n个输入变量个输入变量 种组种组合。合。真值表:真值表:将逻辑
10、函数输入变量取值的不同组将逻辑函数输入变量取值的不同组合与所对应的输出变量值用列表的方合与所对应的输出变量值用列表的方式一一对应列出的表格。式一一对应列出的表格。BABAY4.逻辑函数的表示方法逻辑函数的表示方法 0 1 0 1 0 0 1 10 100011110CAB卡诺图表述方式卡诺图表述方式 n找出那些使函数值为找出那些使函数值为1 1的变量取值组合,变的变量取值组合,变量值为量值为1 1的写成原变量,为的写成原变量,为0 0的写成反变量,的写成反变量,这样对应于使函数值为这样对应于使函数值为1 1的每一个组合就可的每一个组合就可以写出一个乘积项,把这些乘积项加起来,以写出一个乘积项,
11、把这些乘积项加起来,可以得到函数的原函数的标准与或式。可以得到函数的原函数的标准与或式。 把函数值为把函数值为0 0的对应乘积项相加,则得的对应乘积项相加,则得反函数。反函数。5. 逻辑函数表达式与真值表的相互转换(1)由真值表求对应的逻辑函数表达式)由真值表求对应的逻辑函数表达式n例:写出表决逻辑的原函数和反函数的标准与或式。n解 :ABCCABCBABCAFCBACBACBACBAF000101110 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1FA B C表决逻辑真值表表决逻辑真值表(2)由函数式写真值表)由函数式写真值表n将输入变量的各种组合一一代入函数
12、式中计将输入变量的各种组合一一代入函数式中计算输出变量值,全部完成后得到算输出变量值,全部完成后得到真值表真值表。01101111例如:例如:Y=A+BC+ABC,求它的真值表。求它的真值表。6. 逻辑代数化简法逻辑代数化简法 同一个逻辑函数可以有多种表达形式,一种形式的表达同一个逻辑函数可以有多种表达形式,一种形式的表达式,对应一种电路,尽管它们的形式不同,但实现的逻辑式,对应一种电路,尽管它们的形式不同,但实现的逻辑功能相同,所以在实现某种函数的电路时,重要的是如何功能相同,所以在实现某种函数的电路时,重要的是如何处理函数,以尽量少的单元电路、以及电路类型来达到目处理函数,以尽量少的单元电
13、路、以及电路类型来达到目的。的。化简的意义:电路简单化简的意义:电路简单 使用已有器件使用已有器件化简的方法:代数化简法(公式法)化简的方法:代数化简法(公式法) 卡诺图化简法卡诺图化简法 n一般说来,表达式越简单,实现起来逻辑电路也越简单。n默认最简形式为最简默认最简形式为最简与或式与或式,即用最少的与,即用最少的与门和或门来实现函数。门和或门来实现函数。 n与或表达式最简,由它转换得来的表达式,一般来说也就最简。最简与或式最简与或式:乘积项的乘积项的项数最少项数最少。每个乘积项中每个乘积项中变量个数最少变量个数最少。将将n个输入变量的全部最小项用小方块个输入变量的全部最小项用小方块阵列图表
14、示,并且将逻辑相邻的最小项放阵列图表示,并且将逻辑相邻的最小项放在相邻的几何位置上,所得到的阵列图就在相邻的几何位置上,所得到的阵列图就是是n变量的变量的卡诺图卡诺图。 卡诺图的每一个方块卡诺图的每一个方块(最小项)代表一种输入(最小项)代表一种输入组合,并且把对应的输入组合,并且把对应的输入组合注明在阵列图的上方组合注明在阵列图的上方和左方和左方。 卡诺图化简法一、一、与或表达式的卡诺图表示00 01 11 1000011110CDABDCBA ACDCBA DCBA DCBA DCBA DCBA DCBA DCBA DCBA DCBA ABCDCDBADCBA DCBA DABCDCBAD
15、Bn最小项卡诺图的画法最小项卡诺图的画法n画正方形或矩形,图形中分割出画正方形或矩形,图形中分割出2n个小方个小方格,格,n为变量的个数,每个最小项对应一个为变量的个数,每个最小项对应一个小方格。小方格。n变量取值按循环码排列(变量取值按循环码排列(Gray Code),),其特点是相邻两个编码只有一位状态不同。其特点是相邻两个编码只有一位状态不同。n变量卡诺图形象地表达了变量各个最小项之变量卡诺图形象地表达了变量各个最小项之间在逻辑上的相邻性。间在逻辑上的相邻性。00 01 11 1001BCACBA CBACABCBA CBA BCAABCCBA AACCBBC说明: 2个或以上变量,按循
16、环码规则排列;个或以上变量,按循环码规则排列; 每个小方格对应一个最小项;每个小方格对应一个最小项; 相邻方格的最小项,具有逻辑相邻性,相邻方格的最小项,具有逻辑相邻性,即有一个变量互为反变量;即有一个变量互为反变量;具有逻辑相邻性的方格有:具有逻辑相邻性的方格有:相接相接几何相邻的方格;几何相邻的方格;相对相对上下两边、左右两边的方格;上下两边、左右两边的方格;相重相重多变量卡诺图,以对称轴相折叠,重在一齐多变量卡诺图,以对称轴相折叠,重在一齐的方格。的方格。逻辑相邻的最小项可以消去互补变量逻辑相邻的最小项可以消去互补变量mo m1m2 m3m6 m7 m4 m50 100011110CAB
17、三变量卡诺图逻辑相邻举例00 01 11 1001B CACBA CBACABCBA CBA BCAABCCBA 相接相对00 01 11 1001B CACBA CBACABCBA CBA BCAABCCBA 四变量卡诺图逻辑相邻举例相接相对相对00 01 11 1000011110CDABDCBA DCBA DCBA DCBA DCBA DCBA DCBA DCBA DCBA DCBA ABCDCDBADCBA DCBA DABCDCBA由真值表填卡诺图由真值表填卡诺图A B CF0 0 000 0 110 1 000 1 111 0 011 0 111 1 001 1 10mo m1m2
18、 m3m6 m7 m4 m50 100011110CAB 0 100011110CAB对应最小项填1其余补0 0 1 1 0 1 1 0 000 01 11 1001BCAmo m1 m3 m2m4 m5 m7 m600 01 11 1001BCA 1 1 1 1 0 0 0 0(37)二、卡诺图法化简步骤二、卡诺图法化简步骤(一一)布阵布阵(画法规则)(画法规则)(二二)填项填项(用卡诺图表示逻辑函数用卡诺图表示逻辑函数)(三三)勾圈化简勾圈化简(用卡诺图用卡诺图化简化简)三三步步曲曲(一一)布阵(画法规则):布阵(画法规则):1.N=2n 格(格(n 5): 最小项最小项2.循环码编排循环
19、码编排循环邻接循环邻接上下封闭上下封闭布布阵阵(38)A BC D0 00 11 11 00 00 11 1 1 0ABDC m0 m1 m3 m2 m4 m5 m7 m6 m8 m9 m11 m10 m12 m13 m15 m14高位高位低位低位(39)(二二) 填项:填项:用卡诺图表示逻辑函数用卡诺图表示逻辑函数填填F=1的项的项1.最小项直接填入;最小项直接填入;2.刷项(填公因子所包含的项);刷项(填公因子所包含的项);3.按按 (m0 , m15) 编号填入。编号填入。按按F=1的的与或式与或式填项填项方法方法(40)例例1:BADCBABDABDBA)D,C,B,A(F1 A BC
20、 D0 00 11 11 00 00 11 1 1 0ABDC1直接填入直接填入)CC (1公因子公因子:BDA有重复有重复“1”者,只填一个者,只填一个“1”。(41)A BC D0 00 11 11 00 00 11 1 1 0ABDC1111公因子公因子:BD 有重复有重复“1”者,只填一个者,只填一个“1”。刷项:刷项:填公因子包填公因子包含的项含的项例例1:BADCBABDABDBA)D,C,B,A(F1 (42)A BC D0 00 11 11 00 00 11 1 1 0ABDC1111 1 1 1 11 1 1 1有重复有重复“1”者,只填一个者,只填一个“1”。刷项:刷项:填
21、公因子包填公因子包含的项含的项例例1:BADCBABDABDBA)D,C,B,A(F1 (43)A BC D0 00 11 11 00 00 11 1 1 0ABDC1 1 1 11 1 1 1 1 1 1 1F=1的项全部填完以后的项全部填完以后,填项填项结束结束;不填者自动为不填者自动为“0”。例例1:BADCBABDABDBA)D,C,B,A(F1 (44)(三三) 勾圈化简:勾圈化简:1.尽量勾大,尽量勾大,2i个格消个格消i个变量个变量(i n);3.每个圈至少有一个每个圈至少有一个独立格独立格;4.圈必须覆盖所有的圈必须覆盖所有的“1”,即不能,即不能遗漏取值为遗漏取值为“1”的小
22、方块。的小方块。勾勾圈圈原原则则得到得到最简与或式最简与或式。2.“1”可以重复利用;可以重复利用;(45)A BC D0 00 11 11 00 00 11 1 1 0ABDC1 1 1 11 1 1 1 1 1 1 1D保留公因子:保留公因子:消消取值不同的取值不同的变量:变量:1 AAB保留公因子:保留公因子:DB)D,C,B,A(F1 合理重叠(合理重叠(“1”可以重复使用)。可以重复使用)。例例1:BADCBABDABDBA)D,C,B,A(F1 (46)也可以取也可以取F=0的项化简的项化简:A BC D0 00 11 11 00 00 11 1 1 01 1 1 11 1 1 1
23、 1 1 1 10000DB)D,C,B,A(F1 DB DB)D,C,B,A(F1 组合组合 逻辑电路逻辑电路时序时序 逻辑电路逻辑电路功能:功能:输出输出只取决于只取决于 当前的输入当前的输入 逻辑电路逻辑电路组成:组成:门电路(不存在门电路(不存在记忆元件)记忆元件)功能:功能:输出取决于输出取决于当前的输入当前的输入 原来的状态原来的状态组成:组成:组合电路组合电路记忆元件记忆元件 7.组合逻辑电路的设计组合逻辑电路的设计 组合逻辑电路的特点组合逻辑电路的特点2021-10-3148 组合逻辑电路的一般设计步骤组合逻辑电路的一般设计步骤 1、由、由逻辑问题逻辑问题抽象出逻辑功能,列出抽
24、象出逻辑功能,列出真值表真值表;2、由卡洛图进行化简,得到、由卡洛图进行化简,得到逻辑函数式逻辑函数式;4、对逻辑电路图、对逻辑电路图进行仿真进行仿真。 组合逻辑电路手工设计方法组合逻辑电路手工设计方法 设计要求设计要求:按要求得到:按要求得到最简单最简单的逻辑电路。的逻辑电路。3、选定器件,画出、选定器件,画出逻辑电路图逻辑电路图;2021-10-3149例:例: 数据选择器的设计数据选择器的设计在数字信号的传输过程中,有时需要从多路输入数在数字信号的传输过程中,有时需要从多路输入数据中选出某一路数据,完成此功能的逻辑器件称为据中选出某一路数据,完成此功能的逻辑器件称为数据数据选择器,即所谓
25、多路开关选择器,即所谓多路开关 。D3D2D1D0F选择端选择端输入数据输入数据输出数据输出数据A1A0功能示意图功能示意图:数据选择器数据选择器S2021-10-3150一位二选一数据选择器一位二选一数据选择器 真值表:真值表:选择端选择端数数 据据 端端输出端输出端Sa1 a0Y1 0 0 01 0 1 01 1 0 11 1 1 10 a0 a0选择选择a0选选择择a1(51)sa1a00100 01 11 100 01 1011sa0as10saasy勾圈化简:勾圈化简:0010saasy54本课程要学习的PLD设计EDA工具软件 Quartus n美国Altera公司自行设计的第四代
26、PLD开发软件n可以完成PLD的设计输入、逻辑综合、布局与布线、仿真、时序分析、器件编程的全过程n同时还支持SOPC(可编程片上系统)设计开发2.3 原理图输入法逻辑电路设计原理图输入法逻辑电路设计 2.3.1 QuartusII软件简介软件简介 QuartusQuartus简介简介 QuartusQuartus提供了方便的设计输入方式、快速的编提供了方便的设计输入方式、快速的编译和直接易懂的器件编程。能够支持逻辑门数在百译和直接易懂的器件编程。能够支持逻辑门数在百万门以上的逻辑器件的开发,并且为第三方工具提万门以上的逻辑器件的开发,并且为第三方工具提供了无缝接口。供了无缝接口。Quartus
27、Quartus支持的器件有:支持的器件有:Stratix Stratix 、Stratix GXStratix GX、StratixStratix、MercuryMercury、MAX3000AMAX3000A、MAX 7000BMAX 7000B、MAX MAX 7000S7000S、MAX 7000AEMAX 7000AE、MAX MAX 、FLEX6000FLEX6000、FLEX10KFLEX10K、FLEX10KAFLEX10KA、FLEX10KEFLEX10KE、CycloneCyclone、Cyclone Cyclone 、APEX APEX 、APEX20KCAPEX20KC、
28、APEX20KEAPEX20KE和和ACEX1KACEX1K系列。系列。QuartusQuartus软件包的编程器是系统的核心,提供功能软件包的编程器是系统的核心,提供功能强大的设计处理,设计者可以添加特定的约束条件强大的设计处理,设计者可以添加特定的约束条件来提高芯片的利用率。来提高芯片的利用率。 Quartus 主界面Quartus主界面的一个实例原理图输入法逻辑电路设计原理图输入法逻辑电路设计 设计流程设计流程 设设计计构构想想 设设计计输输入入 功功能能正正确确? 原原理理图图 硬硬件件描描述述语语言言 满满足足时时序序要要求求? 功功能能模模拟拟 部部分分编编译译:分分析析与与综综合
29、合 物物理理设设计计: 时时序序模模拟拟 器器件件编编程程 是是 否否 是是 否否 完完 整整 的的 编编 译译 创创建建一一个个新新项项目目 选选择择目目标标器器件件 引引 脚脚 指指 定定 p1、建立一个新工程建立一个新工程,并指定对象器件。p2、设计输入设计输入: 编辑HDL文件 原理图p3、功能模拟功能模拟: 编译(分析和综合) 生成网表文件 建立波形文件p4、物理设计物理设计 引脚分配 完整编译后时序模拟p5、器件编程:、器件编程:下载 n进入原理图编辑器进入原理图编辑器n从元件库中调入元从元件库中调入元件符号件符号 n绘制原理图绘制原理图n将设计项目设置成可调用的元件n设计顶层文件
30、n将设计设置成工程将设计设置成工程2.3.2 电路原理图编辑输入电路原理图编辑输入 进入原理图编辑器进入原理图编辑器进入原理图编辑器进入原理图编辑器pFile-NewpBlock Diagram/Schematic File 选选择择工工具具 全全屏屏显显示示 单单条条连连线线 文文本本工工具具 插插入入符符号号 数数组组连连线线 橡橡皮皮筋筋功功能能 放放大大缩缩小小 部部分分连连线线 原原理理图图编编辑辑区区 最最大大化化按按钮钮 对对角角线线工工具具 弧弧形形工工具具 工工具具条条 原理图编辑器窗口原理图设计方法原理图设计方法 元件输入对话框元件输入对话框 从元件库中调入元件符号从元件库
31、中调入元件符号 电路原理图编辑输入电路原理图编辑输入 电路原理图编辑输入电路原理图编辑输入 (1)新建一个文件夹。)新建一个文件夹。 (2)打开原理图编辑窗。)打开原理图编辑窗。 (3)文件存盘。)文件存盘。 2.3.3 创建工程创建工程 (1)打开建立新工程管理窗。)打开建立新工程管理窗。 新建工程工新建工程工作目录的路作目录的路径径 新建的工程新建的工程名称名称工程的顶层工程的顶层设计实体名设计实体名称称创建工程创建工程 (2)将设计文件加入工程中。)将设计文件加入工程中。 创建工程创建工程 (3)选择目标芯片。)选择目标芯片。 (4)工具设置。)工具设置。 选择对象器件选择对象器件EP1
32、C12Q240C8 创建工程创建工程 (5)结束设置。)结束设置。 创建工程创建工程 (6)编辑构建电路图。)编辑构建电路图。 2.3.5 编译前设置编译前设置 选择选择FPGA目标芯片。目标芯片。 选择对象器件选择对象器件EP1C12Q240C8 2.3.6 全程编译全程编译 processing-start compilationprocessing-start 菜单编译器窗口编译结果的报告2.3.7 时序仿真测试电路功能时序仿真测试电路功能 选择编辑矢量波形文件,选择编辑矢量波形文件,打开波形编辑器(1)打开波形编辑打开波形编辑器器建立波形文件File-New-Vector Wavefo
33、rm File使用波形编辑器绘制测试向量波形 工工具具条条 结结点点名名字字区区 波波形形区区 波形编辑器窗口时序仿真测试电路功能时序仿真测试电路功能 (1)打开波形编辑器。)打开波形编辑器。 (2)设置仿真时间区域。)设置仿真时间区域。 (3)波形文件存盘。)波形文件存盘。 Edit-End Edit-End TimeTime指 定 模 拟终止时间(4)将工程)将工程top的端口信号名选入波形编辑器的端口信号名选入波形编辑器中中(1)选择)选择Pins: all(2)点击)点击 List(5)编辑输入波形(输入激励信号)编辑输入波形(输入激励信号) (1)按住鼠标左键并拖动鼠标,)按住鼠标左
34、键并拖动鼠标,选择一个时间段选择一个时间段(2)在工具条中选择一个)在工具条中选择一个值,给信号赋值值,给信号赋值(6)仿真器参数设置)仿真器参数设置(7)启动仿真器。)启动仿真器。 n模拟器窗口nProcessing- Simulator tooln或Processing-Start Simulator (4) 点击点击 Start, 启动模拟器启动模拟器 点击点击 Open,观察,观察 测试向量波形测试向量波形 (5) 点击点击 Report, 观察模拟结果波形观察模拟结果波形 (1)选择)选择 Functional (2) 产生功能模拟所需网表文件) 产生功能模拟所需网表文件 (3) 指
35、定测试向量文件) 指定测试向量文件 (8)观察分析仿真结果。)观察分析仿真结果。 时延时延2.4 三种风格的Verilog HDL描述cVerilog HDL Styles1. Structural style (结构风格)2. Dataflow style (数据流风格)3. Behavioral style (功能描述风格)cVerilog HDL Synthesis and Simulation ToolsThere are many tools (free or not)I am using 2 free toolsOn Windows: Quartus II Web EditionA
36、 CPLD/FPGA design tool by AlteraOn Linux: Icarus VerilogSupport transistor level designAlso for Windowsc2.4.1 Verilog HDL基础知识基础知识一一.Verilog 模块的结构模块的结构 Verilog HDL以模块集合的形式来描述数字系统。以模块集合的形式来描述数字系统。 “模块模块”(module)是)是Verilog 程序的基本设计单元,程序的基本设计单元,用于描述某个设计的功能、结构、与其他模块通信的外部用于描述某个设计的功能、结构、与其他模块通信的外部端口。端口。 先通过
37、三个简单的先通过三个简单的Verilog程序,直观地认识程序,直观地认识Verilog模块的结构。模块的结构。例例1:根据电路结根据电路结构建模构建模1 bsela11ba selout1modulemux2x1_gate (a0, a1, s,y);output y;input a0, a1, s;not i0(sn, s);and i1(a0_sn, a0, sn);and i2(a1_s, a1, s);or i3( y,a0_sn, a1_s);endmodule/模块名、端口列表模块名、端口列表/声明声明y为输出端口为输出端口/声明声明a0, a1, s为输入端口为输入端口/调用内置
38、调用内置“非非”门元件门元件/调用内置调用内置“与与”门元件门元件/调用内置调用内置“与与”门元件门元件/调用内置调用内置“或或”门元件门元件例例2:根据逻辑表达式建模:根据逻辑表达式建模module mux2x1_dataflow(a0,a1,s,y);output y;input a0,a1,s;endmodule assign y = ( s & a0) | (s & a1) ;定义同上定义同上采用逻辑表达式进行逻辑功能的描述采用逻辑表达式进行逻辑功能的描述1 bsela11ba selout110saasy例例3:根据电路行根据电路行为建模为建模modulemux2x1
39、_behavioral_if_else(a0,a1,s,y); input a0,a1,s; output y; reg y;endmodulealways (s or a0 or a1 ) if ( s ) y = a1; else y = a0;定义定义always中的赋值变量中的赋值变量 只要信号只要信号a0, a1, s中有一个发生变化,就执中有一个发生变化,就执行下面的语句。在这里已行下面的语句。在这里已看不出电路的结构,而是看不出电路的结构,而是一种电路行为的描述。一种电路行为的描述。1 bsela11ba selout1Verilog 模块基模块基本结构本结构module 模块名
40、模块名 (端口列表)(端口列表);端口定义端口定义input 输入端口输入端口output 输出端口输出端口数据类型说明数据类型说明wireregparameter逻辑功能定义逻辑功能定义assignalways语言内置门元件调用语言内置门元件调用endmodule1. 模块声明模块声明 Verilog 模块结构完全包含在模块结构完全包含在module和和endmodule关键字之间。关键字之间。模块声明的格式:模块声明的格式:module 模块名模块名 (端口(端口1,端口,端口2、.););endmodule2. 端口(端口(Port)定义)定义 端口是模块与外界或其他模块进行连接和通信的
41、信号线,端口是模块与外界或其他模块进行连接和通信的信号线,对模块的输入、输出端口要进行明确的定义,格式如下:对模块的输入、输出端口要进行明确的定义,格式如下:input 向量位宽向量位宽 端口名端口名1,端口名,端口名2, 端口名端口名n;output 向量位宽向量位宽 端口名端口名1,端口名,端口名2, 端口名端口名n;定义输入定义输入定义输出定义输出3. 数据类型和信号类型的声明数据类型和信号类型的声明 每个端口除声明为输入、输出,还要声明其数据类型是每个端口除声明为输入、输出,还要声明其数据类型是连线型(连线型(wire)还是寄存器型()还是寄存器型(reg),若没有声明,综合器默若没有
42、声明,综合器默认为是认为是wire型。型。 模块中用到的节点信号(连线)也必须进行数据类型模块中用到的节点信号(连线)也必须进行数据类型的定义。的定义。用用wire将信号定义为连线型;将信号定义为连线型;用用reg将信号定义为寄存器型;将信号定义为寄存器型;用用parameter定义符号常量。定义符号常量。特别提示:输入不能声明为特别提示:输入不能声明为reg型!型!4. 逻辑功能定义逻辑功能定义 模块中最核心的部分是逻辑功能定义。下面介绍几模块中最核心的部分是逻辑功能定义。下面介绍几种基本方法。种基本方法。(1 )用用“assign”持续赋值语句进行逻辑功能的定义持续赋值语句进行逻辑功能的定
43、义例如:例如:assign F=(A&B)|(C&D) ; “assign”语句一般用于组合逻辑的赋值,称为持续赋语句一般用于组合逻辑的赋值,称为持续赋值方式。是一种基于逻辑表达式的逻辑功能描述方式。值方式。是一种基于逻辑表达式的逻辑功能描述方式。在前面的例在前面的例2中,就是采用这种方式建立电路模型。中,就是采用这种方式建立电路模型。(2) 调用内置元件(元件例化)描述电路结构调用内置元件(元件例化)描述电路结构调用调用Verilog HDL中提供的动态元件中提供的动态元件“画画”电路图。电路图。例如:例如: and myand3 ( out, a, b, c ) ;调用门元
44、件,构造一个名为调用门元件,构造一个名为myand3的三输入与门。的三输入与门。and c1 ( F, in1, in2 ) ;调用门元件,构造一个名为调用门元件,构造一个名为c1的二输入与门。的二输入与门。 前面例前面例1中,通过调用门元件,进行信号的相互连接,中,通过调用门元件,进行信号的相互连接,构造电路的模型。构造电路的模型。(3) 用用 “always”过程块描述电路的逻辑功能过程块描述电路的逻辑功能module MUX2_1 (out, a, b, sel); / Port declarations output out; input a, b, sel; wire out, a,
45、 b, sel; wire sel_, a1, b1; reg out; always (sel or a or b ) if ( ! sel ) out = a; else out = b;endmodule注释行注释行定义定义always中的赋值变量中的赋值变量a, b, sel是输入端口,是输入端口,out是输出是输出端口。所有信号通过这些端口从端口。所有信号通过这些端口从模块输入模块输入/输出。输出。另一个模块可以通过模块名及端另一个模块可以通过模块名及端口说明使用多路器。实例化多路口说明使用多路器。实例化多路器时不需要知道其实现细节。这器时不需要知道其实现细节。这正是自上而下设计方法
46、的一个重正是自上而下设计方法的一个重要特点。模块的实现可以是行为要特点。模块的实现可以是行为级也可以是门级,但并不影响高级也可以是门级,但并不影响高层次模块对它的使用。层次模块对它的使用。多路器由关键多路器由关键词词module和和endmodule开开始及结束。始及结束。小 结Verilog HDL程序是由模块构成的 模块是可以进行层次嵌套的上层模块可以通过模块调用构成更大的逻辑系统Verilog 模块分为逻辑综合模块和逻辑模拟模块每个模块由模块声明、端口定义、数据类型说明、逻辑功 能定义四部分构成Verilog HDL程序的书写格式自由,一行可写多个语句,一 个语句也可分写多行。除endm
47、odule外,每个语句和数据定义的最后必须有分号可用/*/和/进行多行、单行注释(绿色),增强程序的可读性二二. Verilog HDL中的数字(数值)常量中的数字(数值)常量Verilog HDL 有下列四种基本的逻辑状态有下列四种基本的逻辑状态:0: 低电平、低电平、 逻辑逻辑0或或“假假” 1: 高电平、逻辑高电平、逻辑1或或“真真”x或或X: 不确定或未知的逻辑状态不确定或未知的逻辑状态 z或或Z: 高阻状态高阻状态Verilog HDL中的常量是有这四类基本值组成的。中的常量是有这四类基本值组成的。 位宽:对应二进位宽:对应二进制数的宽度,省制数的宽度,省缺为缺为32位。位。当指定当
48、指定进制格进制格式时,式时,不能省不能省略略数值采用的进制格式数值采用的进制格式b或或B:二进制:二进制d或或D或缺省:十进制或缺省:十进制h或或H:十六进制:十六进制o或或O:八进制:八进制基于进制的数基于进制的数字序列字序列 Verilog HDL可综合模块中常用的整数型常量的书写格式:可综合模块中常用的整数型常量的书写格式:正、负号正、负号例:例: 659 /简单的十进制表示简单的十进制表示h 837FF /*省缺位宽的十六进制数,位宽大于实际位数,数值高位是省缺位宽的十六进制数,位宽大于实际位数,数值高位是 0或或1,高位补,高位补0;数值高位是;数值高位是 x 或或 z ,高位补,高
49、位补 x 或或 z 。*/o 7460 /省缺位宽的八进制数省缺位宽的八进制数4AF /非法的整数表示,十六进制需要非法的整数表示,十六进制需要 hb001 /非法的整数表示,不能省略非法的整数表示,不能省略 4b0010 /四位的二进制数四位的二进制数5D3 /五位的十进制数五位的十进制数8 b0100_1010 /使用下划线增加可读性使用下划线增加可读性 三三. Verilog HDL中的标识符中的标识符由字母、数字以及符号由字母、数字以及符号“$”、“_”(下划线)组成。(下划线)组成。标识符必须以字母或下划线开头标识符必须以字母或下划线开头标识符是区分大小写的标识符是区分大小写的合法标
50、识符举例:合法标识符举例:countCOUNT_A1_d2不正确的标识符:不正确的标识符:30countOut*$123标识符常用于标识符常用于“模块名模块名”或或“变量名变量名”四四. Verilog HDL中的关键字中的关键字 关键字也称为保留字,是关键字也称为保留字,是Verilog HDL 语言内部的专用语言内部的专用词,用于组织语言结构,全部采用小写形式(蓝色)。词,用于组织语言结构,全部采用小写形式(蓝色)。 例如:例如:module、endmodule、begin、end、always、and、or、if、else、wire、reg、input、output、 请同学们在后续课程
51、学习时,关注、总结请同学们在后续课程学习时,关注、总结 Verilog HDL 中的关键字,从现在开始熟悉掌握。中的关键字,从现在开始熟悉掌握。请注意:请注意:ALWAYS是标识符(黑色),与关键字是标识符(黑色),与关键字always是不同的。是不同的。五五.Verilog HDL中的数据(变量)类型中的数据(变量)类型 在硬件描述语言中,数据类型用来表示逻辑电路中在硬件描述语言中,数据类型用来表示逻辑电路中的物理连线、数据存储和传送单元。的物理连线、数据存储和传送单元。 Verilog HDL中共有中共有19种数据类型,分为连线型种数据类型,分为连线型(Net Type)和寄存器型()和寄
52、存器型(Register Type)。在可综合)。在可综合模块中,最常用的是这两类中的模块中,最常用的是这两类中的wire型、型、reg型、型、integer型和型和parameter型。型。1. 连线型(连线型(Net Type)变量)变量 连线型变量一般用来描述硬件电路中的各种物理连线。连线型变量一般用来描述硬件电路中的各种物理连线。其特点是输出始终跟随输入的变化而变化。对连线型变量有其特点是输出始终跟随输入的变化而变化。对连线型变量有两种驱动方式,一种是在结构描述中将其连接到一个逻辑门两种驱动方式,一种是在结构描述中将其连接到一个逻辑门或模块的输出端;另一种是用或模块的输出端;另一种是用
53、assign语句进行赋值。语句进行赋值。类型类型功能说明功能说明wire, tri常用连线类型常用连线类型wor,trior具有线或特性的连线具有线或特性的连线wand,triand具有线与特性的连线具有线与特性的连线tri1,tri0上拉电阻,下拉电阻上拉电阻,下拉电阻supply1,supply0电源(逻辑电源(逻辑1),地(逻辑),地(逻辑0)Verilog HDL提供了多种连线型变量提供了多种连线型变量重点介绍在可综合模块中最常用的是重点介绍在可综合模块中最常用的是wire型变量型变量 wire型变量常用来表示通过型变量常用来表示通过 assign 语句赋值的组合语句赋值的组合逻辑信号
54、。逻辑信号。 Verilog 模块中的模块中的输入、输出端口输入、输出端口的信号类型说明省的信号类型说明省缺时,自动定义为缺时,自动定义为 wire 型。型。wire型变型变量可用于量可用于任何表达式的输入任何表达式的输入assign语句的输出语句的输出实例元件的输出实例元件的输出对综合器而言,其取值对综合器而言,其取值 0,1,x,z其他模块的输出其他模块的输出wire型变量的定义格式型变量的定义格式 wire 向量位宽向量位宽数据名数据名1,数据名,数据名2, 数据名数据名n ;关键字关键字n-1 : 0 或或 n : 1时,定义多位时,定义多位wire型向量;型向量;省略时,定义一位的省
55、略时,定义一位的wire型变量。型变量。例如,例如,wire型变量或向量的定义:型变量或向量的定义: wire a , b ; /定义两个定义两个 1 位位 wire 型变量型变量 a , b wire 7:0 databus; /定义一个定义一个8位宽的向量(数据总线)位宽的向量(数据总线) wire 20:1 addrbus ; /定义定义20位宽的地址总线位宽的地址总线 例如,例如,wire型向量的全域使用型向量的全域使用 wire 7:0 in , out ; /定义两个定义两个8位位wire型向量型向量in , outassign out = in ; /按位对应赋值按位对应赋值例如
56、,对例如,对wire型向量可选域使用型向量可选域使用 wire 7:0 out ; wire 3:0 in ; assign out 5:2 = in ; / in 的的 0-3 位赋值给位赋值给 out 的的 2-5 位位等效于:等效于:assign out 5 = in 3 ; assign out 4 = in 2 ; assign out 3 = in 1 ; assign out 2 = in 0 ;2. 寄存器型(寄存器型(Register Type)变量)变量 寄存器型变量对应的是具有状态保持作用的电路元寄存器型变量对应的是具有状态保持作用的电路元件。例如:触发器,寄存器。件。例
57、如:触发器,寄存器。 寄存器型变量的特点是必须进行明确的赋值,并且寄存器型变量的特点是必须进行明确的赋值,并且在被重新赋值前一直保持原值。在被重新赋值前一直保持原值。register型变量与型变量与net型变量的根本区别在于:型变量的根本区别在于:register型变量能够保持最后一次的赋值;型变量能够保持最后一次的赋值;net型变量需型变量需要有持续的驱动。要有持续的驱动。 在设计中必须将寄存器型变量放在过程块语句(在设计中必须将寄存器型变量放在过程块语句(initial , always)中,通过过程赋值语句赋值。即:)中,通过过程赋值语句赋值。即: initial , always过程块
58、内被赋值的每一个信号,都必须定义为过程块内被赋值的每一个信号,都必须定义为register型变量。型变量。 Verilog HDL中也提供了多种寄存器型变量,在可综中也提供了多种寄存器型变量,在可综合模块中常用的是合模块中常用的是integer型和型和reg型。型。 integer寄存器型变量是一种纯数学的抽象描述,它寄存器型变量是一种纯数学的抽象描述,它虽然能定义带符号的虽然能定义带符号的32位整型寄存器变量,但不对应任位整型寄存器变量,但不对应任何具体的硬件电路。何具体的硬件电路。 reg 数据名数据名1,数据名,数据名2, 数据名数据名n ;reg型变量的定义格式:型变量的定义格式:关键
59、字关键字n-1 : 0 或或 n : 1时,定义多位时,定义多位reg型向量;型向量;省略时,定义一位的省略时,定义一位的reg型变量。型变量。例如,例如,reg型变量、向量的定义型变量、向量的定义 reg a , b ; /定义两个寄存器型变量定义两个寄存器型变量a , b 。位宽为。位宽为 1 。 reg 7:0 data ; /定义位宽为定义位宽为8的寄存器型变量的寄存器型变量data 。 reg 8:1 data ; /等效。等效。例如:例如:reg 7:0 a,b ;reg3:0 c ;reg d ;d=a 7 & b 7 ; /位选择位选择c=a 7:4 + b 3:0 ;
60、 /域选择域选择 在表达式中,可任意使用在表达式中,可任意使用reg型变量中的一位或相邻几型变量中的一位或相邻几位,分别称为位选择和域选择。位,分别称为位选择和域选择。例:例:parameter sel=8 , code=8ha3 ;/定义定义 sel 为常数为常数8 (十进制),(十进制),code 为常数为常数 a3 (十六进制)(十六进制)parameter data=8 , addr=data * 2 ;/data为为8,addr为为16, 用常数表达式赋值。用常数表达式赋值。3. parameter型数据型数据 在在 Verilog HDL中,用中,用 parameter 定义符号常量,即定定义符号常量,即定义一个标识符代表一个常量。定义格式如下:义一个标识符代表一个常量。定义格式如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子止血仪并发症
- 工程安全管理岗位认知
- 安全地址和电话
- 维修工时定额管理办法细则
- 项目部防护风险评估规程
- 灭火器安全管理
- 隧道通风施工方案范本
- 如何预防糖尿病并发症
- 学堂在线安全学原理
- (完整版)2025年二级建造师市政真题及答案解析
- DB14∕T 3525-2025 防汛抗旱物资储备管理规范
- 2026年河南省职业病诊断医师资格(化学中毒类)高分突破必练试题库(含答案)
- 2025四川紧缺选调《综合测试》试题及答案
- 北京市西城区2024-2025学年五年级上学期期末数学试题
- 2025年高级经济师知识产权考试历年模拟试题及答案
- 塑料氧指数测试工艺考核试卷及答案
- 2025年中国电力电子散热器市场调查研究报告
- 2025年中国电源散热器配件市场调查研究报告
- 暑期防溺水家长会课件教学
- JJF 1033-2023计量标准考核规范
- 北师大版数学六年级上册第七单元全部课件
评论
0/150
提交评论