版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EDA技术及其应用第4章应用VHDL设计数字系统
什么是VHDL语言?常用的硬件描述语言有2种:VHDL、VerilogHDL
VHDL—VHSICHardwaveDescriptionlanguage。VHSIC—VeryHighSpeedIntegratedCircuit,即超高速集成电路。VHDL就是超高速集成电路硬件描述语言。
与其他的硬件描述语言相比,VHDL具有更强的行为描述能力;VHDL丰富的仿真语句和库函数,使得在设计的早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟;VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能;对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表;VHDL对设计的描述有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。VHDL语言的特点4.1多路选择器的VHDL描述
4.1.1多路选择器的VHDL描述图4-1mux21a实体图4-2mux21a结构体
2选1数据选择器的
VHDL设计源程序二选一数据选择器的VHDL程序如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux21ISPORT(A,B:INSTD_LOGIC;S:INSTD_LOGIC;Y:OUTSTD_LOGIC);END21mux;器件的外部说明PORT相当于器件引脚打开库和程序包A,B为输入端,S为选择信号输入端,Y为输出端,若S=0,则Y=A;若S=1,则Y=B2选1数据选择器的
VHDL设计源程序ARCHITECTUREoneOFmux21ISBEGINY<=AWHENS=’0’ELSEBWHENS=’1’;ENDone;器件的内部工作逻辑VHDL设计程序的基本结构建立结构体(ARCHITECTURE),实现逻辑功能打开库(LIBRARY)和程序包(PACKAGE)建立实体(ENTITY),进行端口(PORT)说明库(LIBRARY)库的具体书写格式如下:LIBRARY库名;库是经编译后的数据的集合,用来存放程序包定义、实体定义、构造体定义和配置定义,使设计者可以共享已经编译过的设计结果。常用的库有STD、WORK、IEEE等。库的说明总是放在设计单元的最前面,使设计单元内的语句可以使用库中的数据。程序包(PACKAGE)程序包说明用来罗列VHDL中所要用的常用定义、数据类型、函数定义等,是一个可编译的设计单元,也是库结构中的一个层次。常用的程序包有STANDARD、STD_LOGIC_1164等。程序包的具体使用格式如下:
USE程序包名;实体类似一个“黑盒”,描述了“黑盒”的输入输出口rstd[7:0]clkq[7:0]co实体语句类似于原理图中的一个部件符号,用于描述设计系统的外部接口信息。实体举例ENTITYblack_boxIS
Generic(constantwidth:integer:=7;);PORT( clk,rst:IN std_logic; d: IN std_logic_vector(width
DOWNTO
0); q: OUT std_logic_vector(width
DOWNTO
0); co: OUT std_logic);ENDblack_box;黑盒rstd[7:0]clkq[7:0]coGeneric类属参量
一种端口界面常数,用来规定端口的大小、实体中子元件的数目等与常数不同,常数只能从内部赋值而类属参量可以由实体外部赋值数据类型通常取Integer或Time综合器仅支持数据类型为整数的类属值。PORTS端口(PORT)是实体的一部分PORT类似于器件的管脚,主要用于信号的传输PORT一般有Name,Mode,和Type端口说明格式
PORT
([SIGNAL]Name:Mode
Type[BUS]
[:=表达式
],…)端口类型IN:
数据只能从端口流入实体OUT:
数据只能从端口流出实体INOUT:
数据从端口流入或流出实体BUFFER:
数据从端口流出实体,同时可被内部反馈Entity数据类型STD_LOGIC(等价于BIT):表示1位二进制数STD_LOGIC_VECTOR(ndownto0):表示多位二进制,即数组。VHDL语言中的数据类型有多种,例如:整数、实数布尔量等等,但在数字电路的设计中经常用到的有两种,即:结构体(ARCHITECTURE)特点一个设计实体可以有多个结构体,每个结构体对应着实体不同的实现方案,各个结构的地位是同等的。当一个实体选取某一种结构体时,可使用Configuration(配置)语句为其指定,若不指定,则编译器自动选取第一个。作用结构体描述一个设计的结构或行为,把一个设计的输入和输出之间的关系建立起来。实体和结构体之间的关系Input1InputnOutput1Outputn实体ABCD
SelMUX_Out2结构体用来描述实体的内部结构和逻辑功能必须和实体(ENTITY)相联系一个实体(ENTITY)可以有多个结构体结构体的运行是并发的结构体描述方式包括:
—行为描述
—结构描述
—混合描述结构体(ARCHITECTURE)
结构体的具体描述格式为:ARCHITECTURE结构体名OF实体名IS--说明语句BEGIN
--并行语句或顺序语句END结构体名;4.1多路选择器的VHDL描述
4.1.1多路选择器的VHDL描述
【例4-1】行为描述ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINy<=aWHENs='0'ELSEb;ENDARCHITECTUREone;4.1多路选择器的VHDL描述
4.1.1多路选择器的VHDL描述
【例4-2】结构描述(并发模式)ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISSIGNALd,e:BIT;BEGINd<=aAND(NOTS);e<=bANDs;y<=dORe;ENDARCHITECTUREone;
4.1多路选择器的VHDL描述
4.1.1多路选择器的VHDL描述
【例4-3】行为描述(顺序模式)ENTITYmux21aISPORT(a,b,s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIFs='0'THENy<=a;ELSEy<=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;
4.1多路选择器的VHDL描述
4.1.1多路选择器的VHDL描述图4-3mux21a功能时序波形
4.2寄存器描述的VHDL程序
4.2.1D触发器的描述
图4-4D触发器4.2寄存器描述的VHDL程序
【例4-6】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF1ISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF1ISSIGNALQ1:STD_LOGIC;--类似于在芯片内部定义一个数据的暂存节点BEGINPROCESS(CLK,Q1)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=D;ENDIF;ENDPROCESS;Q<=Q1;--将内部的暂存数据向端口输出(双横线--是注释符号)ENDbhv;4.2寄存器描述的VHDL程序
4.2.2VHDL描述的语言现象说明1.标准逻辑位数据类型STD_LOGICBIT数据类型定义:
TYPEBITIS('0','1');--只有两种取值STD_LOGIC数据类型定义:TYPESTD_LOGICIS('U','X','0','1','Z','W','L','H','-');4.2寄存器描述的VHDL程序
4.2.2VHDL描述的语言现象说明2.设计库和标准程序包
LIBRARYWORK;LIBRARYSTD;USESTD.STANDARD.ALL;
LIBRARY<设计库名>;USE<设计库名>.<程序包名>.ALL;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;
4.2寄存器描述的VHDL程序
4.2.2VHDL描述的语言现象说明3.信号定义和数据对象4.上升沿检测表式和信号属性函数EVENT
5.不完整条件语句与时序电路
4.2寄存器描述的VHDL程序
4.2.2VHDL描述的语言现象说明【例4-7】不完整描述ENTITYCOMP_BADISPORT(a1,b1:INBIT;q1:OUTBIT);END;ARCHITECTUREoneOFCOMP_BADISBEGINPROCESS(a1,b1)BEGINIFa1>b1THENq1<='1';ELSIFa1<b1THENq1<='0';--未提及当a1=b1时,q1作何操作ENDIF;ENDPROCESS;END;5.不完整条件语句与时序电路
4.2寄存器描述的VHDL程序
4.2.2VHDL描述的语言现象说明5.不完整条件语句与时序电路
图4-5例4-7的电路图(Synplify综合)4.2寄存器描述的VHDL程序
4.2.2VHDL描述的语言现象说明5.不完整条件语句与时序电路
图4-6例4-8的电路图(Synplify综合)
【例4-8】完整描述...IFa1>b1THENq1<='1';ELSEq1<='0';ENDIF;...4.2寄存器描述的VHDL程序
4.2.3实现时序电路的不同表述【例4-9】...PROCESS(CLK)BEGINIFCLK'EVENTAND(CLK='1')AND(CLK'LAST_VALUE='0')THENQ<=D;--确保CLK的变化是一次上升沿的跳变ENDIF;ENDPROCESS;4.2寄存器描述的VHDL程序
4.2.3实现时序电路的不同表述【例4-10】...PROCESS(CLK)BEGINIFCLK='1'ANDCLK'LAST_VALUE='0'THENQ<=D;ENDIF;ENDPROCESS;
4.2寄存器描述的VHDL程序
【例4-11】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDFF3ISPORT(CLK,D:INSTD_LOGIC;Q:OUTSTD_LOGIC);END;ARCHITECTUREbhvOFDFF3ISSIGNALQ1:STD_LOGIC;BEGINPROCESS(CLK)BEGINIFrising_edge(CLK)--必须打开STD_LOGIC_1164程序包THENQ1<=D;ENDIF;ENDPROCESS;Q<=Q1;--在此,赋值语句可以放在进程外,作为并行赋值语句END;
4.2寄存器描述的VHDL程序
4.2.3实现时序电路的不同表述【例4-12】...PROCESSBEGINwaituntilCLK='1';--利用wait语句Q<=D;ENDPROCESS;
4.2寄存器描述的VHDL程序
4.2.3实现时序电路的不同表述【例4-13】...PROCESS(CLK)BEGINIFCLK='1'THENQ<=D;--利用进程的启动特性产生对CLK的边沿检测ENDIF;ENDPROCESS;
图4-7例4-13的时序波形4.2寄存器描述的VHDL程序
4.2.3实现时序电路的不同表述【例4-14】...PROCESS(CLK,D)BEGINIFCLK='1'--电平触发型寄存器THENQ<=D;ENDIF;ENDPROCESS
图4-8例4-14的时序波形
4.2寄存器描述的VHDL程序
4.2.4异步时序电路设计
【例4-15】...ARCHITECTUREbhvOFMULTI_DFFISSIGNALQ1,Q2:STD_LOGIC;BEGINPRO1:PROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=NOT(Q2ORA);ENDIF;ENDPROCESS;PRO2:PROCESS(Q1)BEGINIFQ1'EVENTANDQ1='1'THENQ2<=D;ENDIF;ENDPROCESS;QQ<=Q2;...4.2寄存器描述的VHDL程序
4.2.4异步时序电路设计
图4-9例4-15综合后的电路(Synplify综合)4.31位全加器的VHDL描述
4.3.1半加器描述【例4-16】LIBRARYIEEE;--半加器描述(1):布尔方程描述方法USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderisBEGINso<=NOT(aXOR(NOTb));co<=aANDb;ENDARCHITECTUREfh1;4.31位全加器的VHDL描述
4.3.1半加器描述图4-10半加器h_adder电路图及其真值表4.31位全加器的VHDL描述
1位全加器电路图图4-11全加器f_adder电路图及其实体模块
4.31位全加器的VHDL描述
4.3.1半加器描述图4-11全加器f_adder电路图及其实体模块
【例4-17】LIBRARYIEEE;--半加器描述(2):真值表描述方法USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderisSIGNALabc:STD_LOGIC_VECTOR(1DOWNTO0);--定义标准逻辑位矢量数据类型BEGINabc<=a&b;--a相并b,即a与b并置操作PROCESS(abc)BEGINCASEabcIS--类似于真值表的CASE语句WHEN"00"=>so<='0';co<='0';WHEN"01"=>so<='1';co<='0';WHEN"10"=>so<='1';co<='0';WHEN"11"=>so<='0';co<='1';WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;ENDARCHITECTUREfh1;4.31位全加器的VHDL描述
或门逻辑描述【例4-18】
LIBRARYIEEE;--或门逻辑描述USEIEEE.STD_LOGIC_1164.ALL;ENTITYor2aISPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDENTITYor2a;ARCHITECTUREoneOFor2aISBEGINc<=aORb;ENDARCHITECTUREone;
4.31位全加器的VHDL描述
4.3.1半加器描述【例4-19】LIBRARYIEEE;--1位二进制全加器顶层设计描述USEIEEE.STD_LOGIC_1164.ALL;ENTITYf_adderISPORT(ain,bin,cin:INSTD_LOGIC;cout,sum:OUTSTD_LOGIC);ENDENTITYf_adder;ARCHITECTUREfd1OFf_adderISCOMPONENTh_adder--调用半加器声明语句PORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTor2aPORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALd,e,f:STD_LOGIC;--定义3个信号作为内部的连接线。BEGINu1:h_adderPORTMAP(a=>ain,b=>bin,co=>d,so=>e);--例化语句u2:h_adderPORTMAP(a=>e,b=>cin,co=>f,so=>sum);u3:or2aPORTMAP(a=>d,b=>f,c=>cout);ENDARCHITECTUREfd1;
4.31位全加器的VHDL描述
4.3.2CASE语句
1.CASE语句CASE<表达式>ISWhen<选择值或标识符>=><顺序语句>;...;<顺序语句>;When<选择值或标识符>=><顺序语句>;...;<顺序语句>;...WHENOTHERS=><顺序语句>;ENDCASE;WHENOTHERS=><顺序语句>;4.31位全加器的VHDL描述
4.3.2CASE语句
2.标准逻辑矢量数据类型
B:OUTSTD_LOGIC_VECTOR(7DOWNTO0);或SIGNALA:STD_LOGIC_VECTOR(1TO4)
B<="01100010";--B(7)为'0'B(4DOWNTO1)<="1101";--B(4)为'1'B(7DOWNTO4)<=A;--B(6)等于A(2)
SIGNALC:BIT_VECTOR(3DOWNTO0);
4.31位全加器的VHDL描述
4.3.2CASE语句
3.并置操作符
SIGNALa:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd:STD_LOGIC_VECTOR(1DOWNTO0);...a<='1''0'd(1)'1';--元素与元素并置,并置后的数组长度为4...IFad="101011"THEN...–-在IF条件句中可以使用并置符
4.31位全加器的VHDL描述
4.3.3全加器描述和例化语句
COMPONENT元件名ISPORT(端口名表);ENDCOMPONENT文件名;
COMPONENTh_adderPORT(c,d:INSTD_LOGIC;e,f:OUTSTD_LOGIC);
例化名:元件名PORTMAP([端口名=>]连接端口名,...);
4.4计数器设计
【例4-20】ENTITYCNT4ISPORT(CLK:INBIT;Q:BUFFERINTEGERRANGE15DOWNTO0);END;ARCHITECTUREbhvOFCNT4ISBEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ<=Q+1;ENDIF;ENDPROCESS;ENDbhv;
4.4计数器设计
4.4.14位二进制加法计数器设计
1十进制整数0 十进制整数35 十进制整数10E3十进制整数,等于十进制整数100016#D9# 十六进制整数,等于十六进制整数D9H8#720# 八进制整数,等于八进制整数720O2#11010010# 二进制整数,等于二进制整数11010010B4.4.2整数类型4.4计数器设计
4.4.3计数器设计的其他表述方法【例4-21】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT4ISPORT(CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTUREbhvOFCNT4ISSIGNALQ1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=Q1+1;ENDIF;ENDPROCESS;Q<=Q1;ENDbhv;4.4计数器设计
4.4.3计数器设计的其他表述方法图4-124位加法计数器RTL电路(Synplify综合)4.4计数器设计
4.4.3计数器设计的其他表述方法图4-134位加法计数器工作时序
4.5一般加法计数器设计
【例4-22】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLK,RST,EN:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC);ENDCNT10;ARCHITECTUREbehavOFCNT10ISBEGINPROCESS(CLK,RST,EN)VARIABLECQI:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST='1'THENCQI:=(OTHERS=>'0');--计数器异步复位ELSIFCLK'EVENTANDCLK='1'THEN--检测时钟上升沿IFEN='1'THEN--检测是否允许计数(同步使能)IFCQI<9THENCQI:=CQI+1;--允许计数,检测是否小于9ELSECQI:=(OTHERS=>'0');--大于9,计数值清零ENDIF;ENDIF;ENDIF;IFCQI=9THENCOUT<='1';--计数大于9,输出进位信号ELSECOUT<='0';ENDIF;CQ<=CQI;--将计数值向端口输出ENDPROCESS;ENDbehav;4.5一般加法计数器设计
4.5.1相关语法说明1.变量赋值“:=
”2.省略赋值操作符(OTHERS=>X)
a:=’1’SIGNALd1:STD_LOGIC_VECTOR(4DOWNTO0);VARIABLEa1:STD_LOGIC_VECTOR(15DOWNTO0);...d1<=(OTHERS=>'0');a1:=(OTHERS=>'0');d1<=(1=>e(3),3=>e(5),OTHERS=>e(1));
d1<=e(1)&e(5)&e(1)&e(3)&e(1);4.5一般加法计数器设计
4.5.2程序分析
图4-14例4-22的RTL电路(Synplify综合)
4.5一般加法计数器设计
4.5.2程序分析
图4-15例4-22的工作时序4.5一般加法计数器设计
4.5.3含并行置位的移位寄存器设计【例4-23】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYSHFRTIS--8位右移寄存器PORT(CLK,LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);QB:OUTSTD_LOGIC);ENDSHFRT;ARCHITECTUREbehavOFSHFRTISBEGINPROCESS(CLK,LOAD)VARIABLEREG8:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLK'EVENTANDCLK='1'THENIFLOAD='1'THENREG8:=DIN;--由(LOAD='1')装载新数据ELSEREG8(6DOWNTO0):=REG8(7DOWNTO1);ENDIF;ENDIF;QB<=REG8(0);--输出最低位ENDPROCESS;ENDbehav;
4.5一般加法计数器设计
4.5.3含并行置位的移位寄存器设计图4-16例4-23的工作时序
4.6基于QuartusII的VHDL输入设计
4.6.1建立工作库文件夹和编辑设计文件
图4-17选择VHDL文本编辑器4.6基于QuartusII的VHDL文本输入设计
4.6.1建立工作库文件夹和编辑设计文件
图4-18选择编辑文件的语言类型,键入源程序并存盘
4.6基于QuartusII的VHDL文本输入设计
4.6.2创建工程图4-19利用“NewPrejectWizard”创建工程cnt104.6基于QuartusII的VHDL文本输入设计
4.6.2创建工程图4-20将所有相关的文件都加入进此工程
4.6基于QuartusII的VHDL文本输入设计
4.6.3全程编译
图4-21例4-22的时序仿真波形图4.6.4时序仿真4.6基于QuartusII的VHDL文本输入设计
4.6.5应用RTL电路图观察器图4-22RTLViewer选择
4.6基于QuartusII的VHDL文本输入设计
4.6.5应用RTL电路图观察器图4-23例4-22的RTL图4.6基于QuartusII的VHDL文本输入设计
4.6.6硬件测试器图4-24下载cnt10.sof并启动SignalTap
II,测试输出数据4.6基于QuartusII的VHDL文本输入设计
4.6.6硬件测试器图4-25SignalTap
II数据窗设置后的信号波形
习题4-1.画出与下例实体描述对应的原理图符号元件:ENTITYbuf3sIS--实体1:三态缓冲器PORT(input:INSTD_LOGIC;--输入端enable:INSTD_LOGIC;--使能端output:OUTSTD_LOGIC);--输出端ENDbuf3x;ENTITYmux21IS--实体2:2选1多路选择器PORT(in0,in1,sel:INSTD_LOGIC;output:OUTSTD_LOGIC);
习题4-2.图4-26所示的是4选1多路选择器,试分别用IF_THEN语句和CASE语句的表达方式写出此电路的VHDL程序。选择控制的信号s1和s0的数据类型为STD_LOGIC_VECTOR;当s1='0',s0='0';s1='0',s0='1';s1='1',s0='0'和s1='1',s0='1'分别执行y<=a、y<=b、y<=c、y<=d。
图4-264选1多路选择器习题4-3.图4-27所示的是双2选1多路选择器构成的电路MUXK,对于其中MUX21A,当s='0'和'1'时,分别有y<='a'和y<='b'。试在一个结构体中用两个进程来表达此电路,每个进程中用CASE语句描述一个2选1多路选择器MUX21A。图4-27双2选1多路选择器
习题4-4.图4-28是一个含有上升沿触发的D触发器的时序电路,试写出此电路的VHDL设计文件。
图4-28时序电路图习题4-5.给出1位全减器的VHDL描述。要求:(1)首先设计1位半减器,然后用例化语句将它们连接起来,图4-29中h_suber是半减器,diff是输出差,s_out是借位输出,sub_in是借位输入。(2)以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句来完成此项设计(减法运算是x–y-sun_in=diffr)。图4-291位全减器
习题4-6.根据图4-30,写出顶层文件MX3256.VHD的VHDL设计文件。
图4-30题4-6电路图
4-7.设计含有异步清零和计数使能的16位二进制加减可控计数器。
实验与实践4-1.基于VHDL的组合电路的设计...COMPONENTMUX21APORT(a,b,s:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDCOMPONENT;...u1:MUX21APORTMAP(a=>a2,b=>a3,s=>s0,y=>tmp);u2:MUX21APORTMAP(a=>a1,b=>tmp,s=>s1,y=>outy);ENDARCHITECTUREBHV;实验与实践4-2.时序电路的设计4-3.含异步清0和同步时钟使能的加法计数器的设计
4-4.数控分频器的设计图4-31当给出不同输入值D时,FOUT输出不同频率(CLK周期=50ns)实验与实践4-2.时序电路的设计4-3.含异步清0和同步时钟使能的加法计数器的设计
4-4.数控分频器的设计【例4-24】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDVFISPORT(CLK:INSTD_LOGIC;D:INSTD_LOGIC_VECTOR(7DOWNTO0);FOUT:OUTSTD_LOGIC);END;ARCHITECTUREoneOFDVFISSIGNALFULL:STD_LOGIC;BEGINP_REG:PROCESS(CLK)VARIABLECNT8:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLK'EVENTANDCLK='1'THENIFCNT8="11111111"THENCNT8:=D;--当CNT8计数计满时,输入数据D被同步预置给计数器CNT8FULL<='1';--同时使溢出标志信号FULL输出为高电平ELSECNT8:=CNT8+1;--否则继续作加1计数FULL<='0';--且输出溢出标志信号FULL为低电平ENDIF;ENDIF;ENDPROCESSP_REG;P_DIV:PROCESS(FULL)VARIABLECNT2:STD_LOGIC;BEGINIFFULL'EVENTANDFULL='1'THENCNT2:=NOTCNT2;--如果溢出标志信号FULL为高电平,D触发器输出取反IFCNT2='1'THENFOUT<='1';ELSEFOUT<='0';ENDIF;ENDIF;ENDPROCESSP_DIV;END;实验与实践4-5乐曲硬件演奏电路设计
图4-32硬件乐曲演奏电路结构(Synplify综合)实验与实践4-5乐曲硬件演奏电路设计
【例4-25】LIBRARYIEEE;--硬件演奏电路顶层设计USEIEEE.STD_LOGIC_1164.ALL;ENTITYSongerISPORT(CLK12MHZ:INSTD_LOGIC;--音调频率信号CLK8HZ:INSTD_LOGIC;--节拍频率信号CODE1:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--简谱码输出显示HIGH1:OUTSTD_LOGIC;--高8度指示SPKOUT:OUTSTD_LOGIC);--声音输出END;ARCHITECTUREoneOFSongerISCOMPONENTNoteTabsPORT(clk:INSTD_LOGIC;ToneIndex:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDCOMPONENT;COMPONENTToneTabaPORT(Index:INSTD_LOGIC_VECTOR(3DOWNTO0);CODE:OUTSTD_LOGIC_VECTOR(3DOWNTO0);HIGH:OUTSTD_LOGIC;Tone:OUTSTD_LOGIC_VECTOR(10DOWNTO0));ENDCOMPONENT;COMPONENTSpeakeraPORT(clk:INSTD_LOGIC;Tone:INSTD_LOGIC_VECTOR(10DOWNTO0);SpkS:OUTSTD_LOGIC);ENDCOMPONENT;SIGNALTone:STD_LOGIC_VECTOR(10DOWNTO0);SIGNALToneIndex:STD_LOGIC_VECTOR(3DOWNTO0);BEGINu1:NoteTabsPORTMAP(clk=>CLK8HZ,ToneIndex=>ToneIndex);u2:ToneTabaPORTMAP(Index=>ToneIndex,Tone=>Tone,CODE=>CODE1,HIGH=>HIGH1);u3:SpeakeraPORTMAP(clk=>CLK12MHZ,Tone=>Tone,SpkS=>SPKOUT);END
实验与实践4-5乐曲硬件演奏电路设计
【例4-26】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSpeakeraISPORT(clk:INSTD_LOGIC;Tone:INSTD_LOGIC_VECTOR(10DOWNTO0);SpkS:OUTSTD_LOGIC);END;ARCHITECTUREoneOFSpeakeraISSIGNALPreCLK,FullSpkS:STD_LOGIC;BEGINDivideCLK:PROCESS(clk)VARIABLECount4:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPreCLK<='0';--将CLK进行16分频,PreCLK为CLK的16分频IFCount4>11THENPreCLK<='1';Count4:="0000";ELSIFclk'EVENTANDclk='1'THENCount4:=Count4+1;ENDIF;ENDPROCESS;GenSpkS:PROCESS(PreCLK,Tone)--11位可预置计数器VARIABLECount11:STD_LOGIC_VECTOR(10DOWNTO0);BEGINIFPreCLK'EVENTANDPreCLK='1'THENIFCount11=16#7FF#THENCount11:=Tone;FullSpkS<='1';ELSECount11:=Count11+1;FullSpkS<='0';ENDIF;ENDIF;ENDPROCESS;DelaySpkS:PROCESS(FullSpkS)--将输出再2分频,展宽脉冲,使扬声器有足够功率发音VARIABLECount2:STD_LOGIC;BEGINIFFullSpkS'EVENTANDFullSpkS='1'THENCount2:=NOTCount2;IFCount2='1'THENSpkS<='1';ELSESpkS<='0';ENDIF;ENDIF;ENDPROCESS;END;
实验与实践4-5乐曲硬件演奏电路设计
【例4-27】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYToneTabaISPORT(Index:INSTD_LOGIC_VECTOR(3DOWNTO0);CODE:OUTSTD_LOGIC_VECTOR(3DOWNTO0);HIGH:OUTSTD_LOGIC;Tone:OUTSTD_LOGIC_VECTOR(10DOWNTO0));END;ARCHITECTUREoneOFToneTabaISBEGINSearch:PROCESS(Index)BEGINCASEIndexIS--译码电路,查表方式,控制音调的预置数WHEN"0000"=>Tone<="11111111111";CODE<="0000";HIGH<='0';--2047WHEN"0001"=>Tone<="01100000101";CODE<="0001";HIGH<='0';--773;WHEN"0010"=>Tone<="01110010000";CODE<="0010";HIGH<='0';--912;WHEN"0011"=>Tone<="10000001100";CODE<="0011";HIGH<='0';--1036;WHEN"0101"=>Tone<="10010101101";CODE<="0101";HIGH<='0';--1197;WHEN"0110"=>Tone<="10100001010";CODE<="0110";HIGH<='0';--1290;WHEN"0111"=>Tone<="10101011100";CODE<="0111";HIGH<='0';--1372;WHEN"1000"=>Tone<="10110000010";CODE<="0001";HIGH<='1';--1410;WHEN"1001"=>Tone<="10111001000";CODE<="0010";HIGH<='1';--1480;WHEN"1010"=>Tone<="11000000110";CODE<="0011";HIGH<='1';--1542;WHEN"1100"=>Tone<="11001010110";CODE<="0101";HIGH<='1';--1622;WHEN"1101"=>Tone<="11010000100";CODE<="0110";HIGH<='1';--1668;WHEN"1111"=>Tone<="11011000000";CODE<="0001";HIGH<='1';--1728;WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;END;
实验与实践4-5乐曲硬件演奏电路设计
【例4-28】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYNoteTabsISPORT(clk:INSTD_LOGIC;ToneIndex:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTUREoneOFNoteTabsISCOMPONENTMUSIC--音符数据ROMPORT(address:INSTD_LOGIC_VECTOR(7DOWNTO0); inclock:INSTD_LOGIC; q:OUTSTD_LOGIC_VECTOR(3DOWNTO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东经贸职业学院《供应链管理专业英语》2024-2025学年第二学期期末试卷
- 江苏航空职业技术学院《合唱训练1》2024-2025学年第二学期期末试卷
- 宁波诺丁汉大学《数学解题方法》2024-2025学年第二学期期末试卷
- 银川能源学院《土力学A》2024-2025学年第二学期期末试卷
- 朔州师范高等专科学校《形体与舞蹈1》2024-2025学年第二学期期末试卷
- 杭州师范大学《全球气候史》2024-2025学年第二学期期末试卷
- 杭州医学院《搜索引擎系统应用实践》2024-2025学年第二学期期末试卷
- 上海科创职业技术学院《普通生态学Ⅱ(群落、生态系统)》2024-2025学年第二学期期末试卷
- 新疆交通职业技术学院《可持续时尚设计》2024-2025学年第二学期期末试卷
- 2026中国华电集团有限公司中国华电科工集团有限公司校园招聘(第二批)考试参考题库及答案解析
- 医院培训课件:《中医病历书写基本规范及要点》
- 中考道德与法治一轮专题复习课件专题四 生命的思考(含答案)
- 《数学(下册)第8版》中职全套教学课件
- 《粤港澳大湾区发展规划纲要》(双语全文)
- XX小学法治副校长(派出所民警)法制教育课讲稿
- 断绝父母关系合同范本
- DL∕T 2528-2022 电力储能基本术语
- DL∕T 1441-2015 智能低压配电箱技术条件
- 2024年俄罗斯全棉产品行业应用与市场潜力评估
- 低碳园区物业管理服务
- 设备长协方案
评论
0/150
提交评论