版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
EDA技术及其应用第4章应用VHDL设计数字系统4.1多路选择器的VHDL描述4.1.1多路选择器的VHDL描述图4-1mux21a实体图4-2mux21a结构体4.1多路选择器的VHDL描述4.1.1
多路选择器的VHDL描述【例4-1】ENTITYmux21aIS PORT(a,b:INBIT; s:INBIT; y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aIS BEGIN y<=aWHENs='0'ELSEb;ENDARCHITECTUREone;4.1多路选择器的VHDL描述4.1.1
多路选择器的VHDL描述【例4-3】
ENTITYmux21aIS PORT(a,b,s:INBIT; y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aIS BEGIN PROCESS(a,b,s)BEGIN IFs='0'THEN y<=a;ELSEy<=b;ENDIF; ENDPROCESS;ENDARCHITECTUREone;4.1多路选择器的VHDL描述4.1.1多路选择器的VHDL描述
图4-3mux21a功能时序波形4.1多路选择器的VHDL描述4.1.2语句结构和语法说明1.实体表达
【例4-4】
ENTITYe_nameIS PORT(p_name:port_mdata_type; ... p_namei:port_midata_type); ENDENTITYe_name;4.1多路选择器的VHDL描述6.结构体表达【例4-5】ARCHITECTUREarch_nameOFe_nameIS[说明语句]BEGIN(功能描述语句)ENDARCHITECTUREarch_name;4.1多路选择器的VHDL描述7.赋值符号和数据比较符号IFaTHEN...--注意,a的数据类型必须是booleanIF(s1='0')AND(s2='1')OR(c<b+1)THEN..8.逻辑操作符9.条件语句4.1多路选择器的VHDL描述10.WHEN_ELSE条件信号赋值语句赋值目标<=表达式WHEN赋值条件ELSE表达式WHEN赋值条件ELSE...表达式;z<=aWHENp1='1'ELSEbWHENp2='1'ELSEc;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描述的语言现象说明3.信号定义和数据对象4.上升沿检测表式和信号属性函数EVENT5.不完整条件语句与时序电路4.2寄存器描述的VHDL程序4.2.2VHDL描述的语言现象说明
5.不完整条件语句与时序电路【例4-7】ENTITYCOMP_BADIS PORT(a1,b1:INBIT; q1:OUTBIT);END;ARCHITECTUREoneOFCOMP_BADIS BEGIN PROCESS(a1,b1)BEGINIFa1>b1THENq1<='1';ELSIFa1<b1THENq1<='0';--未提及当a1=b1时,q1作何操作ENDIF; ENDPROCESS;END;4.2寄存器描述的VHDL程序4.2.2VHDL描述的语言现象说明5.不完整条件语句与时序电路
图4-5例4-7的电路图(Synplify综合)......4.2寄存器描述的VHDL程序4.2.2VHDL描述的语言现象说明5.不完整条件语句与时序电路
【例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.2.3实现时序电路的不同表述【例4-12】...PROCESS BEGIN waituntilCLK='1' Q<=D;ENDPROCESS;--利用wait语句4.2寄存器描述的VHDL程序4.2.3实现时序电路的不同表述【例4-13】...PROCESS(CLK) BEGIN IFCLK='1' THENQ<=D; ENDIF;ENDPROCESS;--利用进程的启动特性产生对CLK的边沿检测图4-7例4-13的时序波形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_adderIS PORT(a,b:INSTD_LOGIC; co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderisBEGIN so<=NOT(aXOR(NOTb));co<=aANDb;ENDARCHITECTUREfh1;4.31位全加器的VHDL描述4.3.1半加器描述aand2coa00b01so 0 1co 0 0bnotxnor2so11011001图4-10半加器h_adder电路图及其真值表a4.31位全加器的VHDL描述4.3.1半加器描述ain
u1 h_adderAcod
h_adderAcofbor2accoutainbinf_addercoutbinBsoeBsou3sumcinsumcin
u2图4-11全加器f_adder电路图及其实体模块USEIEEE.STD_LOGIC_1164.ALL;ENDARCHITECTUREfh1;4.3h_adderISco,soOUT半加器描述【例4-17】LIBRARYIEEE;--半加器描述(2):真值表描述方法ENTITY1位全加器的VHDL描述PORT(a,b:INSTD_LOGIC;4.3.1:STD_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;图4-11全加器f_adder电路图及其实体模块4.31位全加器的VHDL描述4.3.1半加器描述【例4-18】
LIBRARYIEEE;--或门逻辑描述 USEIEEE.STD_LOGIC_1164.ALL; ENTITYor2aIS PORT(a,b:INSTD_LOGIC; c:OUTSTD_LOGIC); ENDENTITYor2a; ARCHITECTUREoneOFor2aIS BEGIN c<=aORb; ENDARCHITECTUREone;4.3.1半加器描述4.3f_adderIS【例4-19】LIBRARYIEEE;--1位二进制全加器顶层设计描述USEIEEE.STD_LOGIC_1164.ALL;ENTITY1位全加器的VHDL描述PORT(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...IFa&d="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计数器设计.24位二进制加法计数器设计整数类型103510E316#D9#8#720#2#11010010#十进制整数 十进制整数 十进制整数 十进制整数,等于十进制整数1000十六进制整数,等于十六进制整数D9H八进制整数,等于八进制整数720O 二进制整数,等于二进制整数11010010B4.4计数器设计4.4.3计数器设计的其他表述方法【例4-21】
LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYCNT4IS PORT(CLK:INSTD_LOGIC; Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0)); END; ARCHITECTUREbhvOFCNT4ISSIGNALQ1:STD_LOGIC_VECTOR(3DOWNTO0); BEGIN PROCESS(CLK) BEGIN IFCLK'EVENTANDCLK='1'THEN Q1<=Q1+1; ENDIF; ENDPROCESS; Q<=Q1; ENDbhv;14.4计数器设计4.4.3计数器设计的其他表述方法CLK[3:0]组合电路 加1器4位锁存器输出反馈锁存信号+[1:4][1:4]D[3:0]Q[3:0][3:0][3:0]Q[3:0]un2_q1[1:4]Q[3:0]图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.变量“:=”a:=’1’2.省略赋值操作符(OTHERS=>X)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));
f<=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;ARCHITECTUREbehavOFSHFRTIS BEGIN PROCESS(CLK,LOAD) VARIABLEREG8:STD_LOGIC_VECTOR(7DOWNTO0); BEGIN IFCLK'EVENTANDCLK='1'THEN IFLOAD='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全程编译时序仿真图4-21例4-22的时序仿真波形图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并启动SignalTapII,测试输出数据4.6基于QuartusII的VHDL文本输入设计4.6.6硬件测试器
图4-25SignalTapII数据窗设置后的信号波形习题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)实验与实践END;4-2.时序电路的设计P_REG:PROCESS(CLK)VARIABLECNT8:STD_LOGIC_VECTOR(7DOWNTO0);IFCNT8="11111111"THENCNT8:=D;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);ARCHITECTUREoneOFDVFIS SIGNALFULL:STD_LOGIC;BEGIN4-3.含异步清0和同步时钟使能的加法计数器的设计BEGINIFCLK'EVENTANDCLK='1'THEN
--当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综合)实验与实践SPKOUT:OUTSTD_LOGIC【例4-25】LIBRARYIEEE;--硬件演奏电路顶层设计USEIEEE.STD_LOGIC_1164.ALL;ENTITYSongerISPORT(CLK12MHZ:INSTD_LOGIC;--音调频率信号CLK8HZ:INSTD_LOGIC;--节拍频率信号CODE1:OUTSTD_LOGIC_VECTOR(3DOWNTO0);--简谱码输出显示HIGH1:OUTSTD_LOGIC;--高8度指示4-5乐曲硬件演奏电路设计);--声音输出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-5PreCLK,FullSpkS:STD_LOGIC;【例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;ARCHITECTUREoneOFSpeakeraISSIGNAL乐曲硬件演奏电路设计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;ENTITYToneTabaIS PORT(Index:INSTD_LOGIC_VECTOR(3DOWNTO0); CODE:OUTSTD_LOGIC_VECTOR(3DOWNTO0); HIGH:OUTSTD_LOGIC; Tone:OUTSTD_LOGIC_VECTOR(10DOWNTO0));END;乐曲硬件演奏电路设计ARCHITECTUREoneOFToneTabaISBEGIN Search:PROCESS(Index) BEGIN CASEIndexIS--译码电路,查表方式,控制音调的预置数
WHEN"0000"=>Tone<="11111111111";CODE<="0000"; WHEN"0001"=>Tone<="";CODE<="0001"; WHEN"0010"=>Tone<="";CODE<="0010"; WHEN"0011"=>Tone<="10000001100";CODE<="0011"; WHEN"0101"=>Tone<="10010101101";CODE<="0101"; WHEN"0110"=>Tone<="10100001010";CODE<="0110"; WHEN"0111"=>Tone<="10101011100";CODE<="0111"; WHEN"1000"=>Tone<="10110000010";CODE<="0001"; WHEN"1001"=>Tone<="10111001000";CODE<="0010"; WHEN"1010"=>Tone<="11000000110";CODE<="0011"; WHEN"1100"=>Tone<="11001010110";CODE<="0101"; WHEN"1101"=>Tone<="11010000100";CODE<="0110"; WHEN"1111"=>Tone<="11011000000";CODE<="0001"; WHENOTHERS=>NULL; ENDCASE; ENDPROCESS;END;HIGHHIGHHIGHHIGHHIGHHIGHHIGHHIGHHIGHHIGHHIGHHIGHHIGH<='0';--2047<='0';--773;<='0';--912;<='0';--1036;<='0';--1197;<='0';--1290;<='0';--1372;<='1';--1410;<='1';--1480;<='1';--1542;<='1';--1622;<='1';--1668;<='1';--1728;LIBRARYIEEE;ToneIndex:OUT【例4-28】USEIEEE.STD_LOGIC_1164.ALL;实验与实践USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYNoteTabsISPORT(clk:INSTD_LOGIC;4-5乐曲硬件演奏电路设计STD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTUREoneOFNoteTabsISCOMPONENTMUSIC--音符数据ROMPORT(address:INSTD_LOGIC_VECTOR(7DOWNTO0);inclock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDCOMPONENT;SIGNALCounter:STD_LOGIC_VECTOR(7DOWNTO0);BEGINCNT8:PROCESS(clk,Counter)BEGINIFCounter=138THENCounter<="00000000";ELSIF(clk'EVENTANDclk='1')THENCounter<=Counter+1;ENDIF;ENDPROCESS;u1:MUSICPORTMAP(address=>Counter,q=>ToneIndex,inclock=>clk);END;4-54;--“梁祝”乐曲演奏数据实验与实践【例4-29】WIDTH=乐曲硬件演奏电路设计DEPTH=256;ADDRESS_RADIX=DEC;DATA_RADIX=DEC;CONTENTBEGIN--注意实用文件中要展开以下数据,每一组占一行00:3;01:3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 26年PSA靶向疗效评估应用要点
- T-XEDK 1.4-2025 小额贷款公司服务管理规范 第4部分:服务规范
- 2026 减脂期乌龙茶课件
- 跨学科合作:多科室协作护理案例
- 2026 增肌期香辛料应用课件
- 2026 增肌期燕麦奶课件
- 静脉通路维护
- 2026 塑型进阶鸭腿课件
- 2026 增肌期升级技巧课件
- 膀胱肿瘤患者的家属护理培训
- 起重指挥Q1培训课件
- 车队充电服务协议书范本
- 2024年北京师范大学附中丘成桐少年班选拔数学试题(含答案详解)
- 辛德勒名单教学课件
- 女装会员管理课件
- 关于销售制度管理办法
- 《老年人生活照料与基础护理实务》智慧健康养老服务与管理专业全套教学课件
- GB/T 5974-2025起重机械钢丝绳用套环
- DB65∕T 4828-2024 和田玉(子料) 鉴定
- 化工厂工艺报警管理制度
- 八年级英语下学期期末考试(深圳专用)(原卷版)
评论
0/150
提交评论