您好,欢迎访问三七文档
第1页共29页2.看下面原理图,写出相应VHDL描述LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMYCIRISPORT(A,CLK:INSTD_LOGIC;C,B:OUTSTD_LOGIC);ENDMYCIR;ARCHITECTUREBEHAVOFMYCIRISSIGNALTA:STD_LOGIC;BEGINPROCESS(A,CLK)BEGINIFCLK’EVENTANDCLK=‘1’THENTA=A;B=TA;C=AANDTA;ENDIF;ENDPROCESS;ENDBEHAV;2.看下面原理图,写出相应VHDL描述Libraryieee;Useieee.std_logic_1164.all;EntitymycirisPort(ain,bin,clk:instd_logic;Cout:outstd_logic);Endmycir;ArchitectureoneofmycirisSignaltb,tc;beginProcess(clk)beginIfclk’eventandclk=‘1’thentb=bin;endif;Endprocess;Process(clk,tc)beginIfclk=‘1’thencout=tc;endif;Endprocess;Tc=ainxortb;Endone;1.设计一个3-8译码器输入端口:din输入端,位宽为3位EN译码器输出使能,高电平有效输出端口:xout译码器输出,低电平有效LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;第2页共29页ENTITYDECODE3_8ISPORT(DIN:INSTD_LOGIC_VECTOR(2DOWNTO0);EN:INSTD_LOGIC;XOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDDECODE3_8;ARCHITECTUREONEOFDECODE3_8ISBEGINPROCESS(DIN,EN)BEGINIFEN=‘1’THENIFDIN=“111”THENXOUT=“11111110”;ELSIFDIN=“110”THENXOUT=“11111101”;ELSIFDIN=“101”THENXOUT=“11111011”;ELSIFDIN=“100”THENXOUT=“11110111”;ELSIFDIN=“011”THENXOUT=“11101111”;ELSIFDIN=“010”THENXOUT=“11011111”;ELSIFDIN=“001”THENXOUT=“10111111”;ELSEXOUT=“11111011”;ENDIF;ENDPROCESS;ENDONE;2.看下面原理图,写出相应VHDL描述DQDFFDQDFFORyoutOUTPUTxinINPUTclkINPUTLIBARRYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMYCIRISPORT(XIN,CLK:INSTD_LOGIC;YOUT:OUTSTD_LOGIC);ENDMYCIR;ARCHITECTUREONEOFMYCIRISSIGNALA,B,C;BEGINB=XINORA;PROCESS(CLK)BEGINIFCLK’EVENTANDCLK=‘1’THENA=C;C=B;ENDIF;ENDPROCESS;YOUT=C;ENDONE;根据原理图写出相应的VHDL程序:(10分)第3页共29页Libraryieee;Useieee.std_logic_1164.all;EntitymycirisPort(A,B,clk:instd_logic;Qout:outstd_logic);Endmycir;ArchitecturebehaveofmycirisSignalta,tb,tc:std_logic;Begintc=tanandtb;Process(clk)BeginIfclk’eventandclk=‘1’thenTa=A;Tb=B;Endif;Endprocess;Process(clk,tc)BeginIfclk=‘1’thenQout=c;Endif;Endprocess;Endbehave;已知一个简单的波形发生器的数字部分系统框图如下图所示:图中DOWNCNT、MYROM都是在QuartusII中使用MegaWizard调用的LPM模块,其VHDL描述中Entity部分分别如下:ENTITYDOWNCNTISPORT(clock:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(5DOWNTO0));ENDDOWNCNT;ENTITYmyromISPORT(address:INSTD_LOGIC_VECTOR(5DOWNTO0);q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDmyrom;试用VHDL描述该系统的顶层设计(使用例化语句)。Libraryieee;Useieee.std_logic_1164.all;EntitymysgisPort(clk:instd_logic;To_da:outstd_logic_vector(7downto0));Endmysq;第4页共29页ArchitectureoneofmysqisSignaladdr:std_logic_vector(5downto0);ComponentlcntPort(clock:instd_logic;Q:outstd_logic_vector(5downto0));Endcomponent;ComponentlromPort(address:instd_logic_vector(5downto0);Q:outstd_logic_vector(7downto0));Endcomponent;BeginU1:lcntportmap(clock=clk,q=addr);U2:lromportmap(address=addr,q=to_da);Endone;根据原理图写出相应的VHDL程序:(15分)Libraryieee;Useieee.std_logic_1164.all;EntitymycirisPort(din,clk:instd_logic;Qout:outstd_logic);Endmycir;ArchitecturebehaveofmycirisSignala,b,c;BeginQout=cnand(axorb);Process(clk)BeginIfclk’eventandclk=‘1’thenA=din;B=A;C=B;Endif;Endprocess;Endbehave;四、VHDL程序改错:(10分)仔细阅读下列程序,回答问题1LIBRARYIEEE;2USEIEEE.STD_LOGIC_1164.ALL;34ENTITYCNT4IS5PORT(CLK:INSTD_LOGIC;6Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));7ENDCNT4;8ARCHITECTUREbhvOFCNT4IS9SIGNALQ1:STD_LOGIC_VECTOR(3DOWNTO0);10BEGIN11PROCESS(CLK)BEGIN12IFRISING_EDGE(CLK)begin13IFQ115THEN14Q1=Q1+1;15ELSE第5页共29页16Q1=(OTHERS='0');17ENDIF;18ENDIF;19ENDPROCESS;20Q=Q1;21ENDbhv;221.在程序中存在两处错误,试指出,并说明理由:12行,IF语句对应的关键字是then而非begin14行,Q1是矢量,不能直接和整数1相加,需要使用重载函数2.修改相应行的程序(如果是缺少语句请指出大致的行数):错误1行号:12程序改为:BEGIN改为THEN错误2行号:3程序改为:USEIEEE.STD_LOGIC_UNSIGNED.ALL;01LIBRARYIEEE;02USEIEEE.STD_LOGIC_1164.ALL;03USEIEEE.STD_LOGIC_UNSIGNED.ALL;04ENTITYLED7CNTIS05PORT(CLR:INSTD_LOGIC;06CLK:INSTD_LOGIC;07LED7S:OUTSTD_LOGIC_VECTOR(6DOWNTO0));08ENDLED7CNT;09ARCHITECTUREoneOFLED7CNTIS10SIGNALTMP:STD_LOGIC_VECTOR(3DOWNTO0);11BEGIN12CNT:PROCESS(CLR,CLK)13BEGIN14IFCLR='1'THEN15TMP=0;16ELSEIFCLK'EVENTANDCLK='1'THEN17TMP=TMP+1;18ENDIF;19ENDPROCESS;20OUTLED:PROCESS(TMP)21BEGIN22CASETMPIS23WHEN0000=LED7S=0111111;24WHEN0001=LED7S=0000110;25WHEN0010=LED7S=1011011;26WHEN0011=LED7S=1001111;27WHEN0100=LED7S=1100110;28WHEN0101=LED7S=1101101;29WHEN0110=LED7S=1111101;30WHEN0111=LED7S=0000111;31WHEN1000=LED7S=1111111;32WHEN1001=LED7S=1101111;33WHENOTHERS=LED7S=(OTHERS='0');34ENDCASE;35ENDPROCESS;36ENDone;在程序中存在两处错误,试指出,并说明理由:第15行,错误:整数0不能直接赋值给TMP矢量;改正:TMP=(OTHERS=‘0’);第16行,错误:ELSEIF缺少一条对应的ENDIF语句;改正:将ELSEIF改为关键字ELSIF1LIBRARYIEEE;2USEIEEE.STD_LOGIC_1164.ALL;34ENTITYCNT10IS5PORT(CLK:INSTD_LOGIC;6Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));7ENDCNT10;8ARCHITECTUREbhvOFCNT10IS9SIGNALQ1:STD_LOGIC_VECTOR(3DOWNTO0);10BEGIN第6页共29页11PROCESS(CLK)BEGIN12IFRISING_EDGE(CLK)begin13IFQ19THEN14Q1=Q1+1;15ELSE16Q1=(OTHERS='0');17ENDIF;18ENDIF;19ENDPROCESS;20Q=Q1;21ENDbhv;指出并修改相应行的程序(如果是缺少语句请指出大致的行数):错误1行号:12程序改为:IFRISING_EDGE(CLK)THEN错误2行号:3程序改为:USEIEEE.STD_LOGIC_UNSIGNED.ALL;12行if语句配套关键字是then而非begin3行程序中使用了+号重载函数,应包含使用对应程序包ieee.std_logic_unsigned.all2.若编译时出现如下错误,请分析原因。当前编译的程序文件没有放在指定文件夹内,所以系统找不到WORK工作库。下面程序是一个10线-4线优先编码器的VHDL描述,试补充完整。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcoderISPORT(din:INSTD_LOGIC_VECTOR(9DOWNTO0);output:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDcoder;ARCHITECTUR
本文标题:EDA-程序题
链接地址:https://www.777doc.com/doc-2308267 .html