03第三章VHDL语言基础习题答案.doc
VHDL程序练习题含答案

VHDL程序填空题一在下面横线上填上合适的VHDL关键词;完成2选1多路选择器的设计.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;1 MUX21 ISPORTSEL:IN STD_LOGIC;A;B:IN STD_LOGIC;Q: OUT STD_LOGIC ;END MUX21;2 BHV OF MUX21 ISBEGINQ<=A WHEN SEL=’1’ ELSE B;END BHV;二在下面横线上填上合适的语句;完成BCD-7段LED显示译码器的设计.. LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY BCD_7SEG ISPORT BCD_LED : IN STD_LOGIC_VECTOR3 DOWNTO 0;LEDSEG : OUT STD_LOGIC_VECTOR6 DOWNTO 0;END BCD_7SEG;ARCHITECTURE BEHA VIOR OF BCD_7SEG ISBEGINPROCESSBCD_LED3IF BCD_LED="0000" THEN LEDSEG<="0111111";ELSIF BCD_LED="0001" THEN LEDSEG<="0000110";ELSIF BCD_LED="0010" THEN LEDSEG<= 4 ;ELSIF BCD_LED="0011" THEN LEDSEG<="1001111";ELSIF BCD_LED="0100" THEN LEDSEG<="1100110";ELSIF BCD_LED="0101" THEN LEDSEG<="1101101";ELSIF BCD_LED="0110" THEN LEDSEG<="1111101";ELSIF BCD_LED="0111" THEN LEDSEG<="0000111";ELSIF BCD_LED="1000" THEN LEDSEG<="1111111";ELSIF BCD_LED="1001" THEN LEDSEG<="1101111";ELSE LEDSEG<= 5 ;END IF;END PROCESS;END BEHA VIOR;三在下面横线上填上合适的语句;完成数据选择器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX16 ISPORT D0; D1; D2; D3: IN STD_LOGIC_VECTOR15 DOWNTO 0;SEL: IN STD_LOGIC_VECTOR 6 DOWNTO 0;Y: OUT STD_LOGIC_VECTOR15 DOWNTO 0;END;ARCHITECTURE ONE OF MUX16 ISBEGINWITH 7 SELECTY <= D0 WHEN "00";D1 WHEN "01";D2 WHEN "10";D3 WHEN 8 ;END;四在下面横线上填上合适的语句;完成JK触发器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY JKFF1 ISPORT PSET;CLR;CLK;J;K : IN STD_LOGIC;Q : OUT STD_LOGIC;END JKFF1;ARCHITECTURE MAXPLD OF JKFF1 ISSIGNAL TEMP:STD_LOGIC;BEGINPROCESSPSET;CLR;CLKBEGINIF PSET='0'AND CLR='1' THEN TEMP<='1';ELSIF PSET='1'AND CLR='0' THEN TEMP<='0';ELSIF PSET='0'AND CLR='0' THEN NULL;9 CLK'EVENT AND CLK='1' THEN10 J='0' AND K='0' THEN TEMP<=TEMP;ELSIF J='0' AND K='1' THEN TEMP<='0';ELSIF J='1' AND K='0' THEN TEMP<='1';ELSIF J='1' AND K='1' THEN TEMP<= 11 ;END IF;END IF;END PROCESS;Q<=TEMP;END ;五在下面横线上填上合适的语句;完成计数器的设计..说明:设电路的控制端均为高电平有效;时钟端CLK;电路的预置数据输入端为4位D;计数输出端也为4位Q;带同步始能EN、异步复位CLR和预置控制LD的六进制减法计数器.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT6 ISPORTEN;CLR;LD;CLK:IN STD_LOGIC;D: IN STD_LOGIC_VECTOR3 DOWNTO 0;Q:OUT STD_LOGIC_VECTOR3 DOWNTO 0;END CNT6;ARCHITECTURE BEHA OF CNT6 ISSIGNAL QTEMP:STD_LOGIC_VECTOR3 DOWNTO 0;BEGINPROCESSCLK;CLR;LDBEGINIF CLR='1' THEN QTEMP<="0000"; --CLR=1清零ELSIF CLK'EVENT AND CLK='1' THEN --判断是否上升沿IF LD='1' THEN QTEMP<= 12 ; --判断是否置位ELSIF EN='1' THEN --判断是否允许计数IF QTEMP="0000" THEN QTEMP<= 13 ; --等于0;计数值置5 ELSE QTEMP<= 14 ; --否则;计数值减1END IF;END IF;END IF;Q<=QTEMP;END PROCESS;END BEHA;六在下面横线上填上合适的语句;完成状态机的设计..说明:设计一个双进程状态机;状态0时如果输入”10”则转为下一状态;否则输出”1001”;状态1时如果输入”11”则转为下一状态;否则输出”0101”;状态2时如果输入”01”则转为下一状态;否则输出”1100”;状态3时如果输入”00”则转为状态0;否则输出”0010”..复位时为状态0..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY MOORE1 ISPORT DATAIN: IN STD_LOGIC_VECTOR1 DOWNTO 0;CLK; RST:IN STD_LOGIC;Q: OUT STD_LOGIC_VECTOR3 DOWNTO 0;END;ARCHITECTURE ONE OF MOORE1 ISTYPE ST_TYPE IS ST0; ST1; ST2; ST3; --定义4个状态SIGNAL CST; NST: ST_TYPE; --定义两个信号现态和次态SIGNAL Q1:STD_LOGIC_VECTOR3 DOWNTO 0;BEGINREG: PROCESSCLK; RST --主控时序进程BEGINIF RST='1' THEN CST<= 15 ; --异步复位为状态0 ELSIF CLK'EVENT AND CLK='1' THENCST<= 16 ; --现态=次态END IF;END PROCESS;COM: PROCESSCST; DATAINBEGINCASE CST ISWHEN ST0 => IF DATAIN="10" THEN NST<=ST1;ELSE NST<=ST0; Q1<="1001"; END IF;WHEN ST1 => IF DATAIN="11" THEN NST<=ST2;ELSE NST<=ST1; Q1<="0101"; END IF;WHEN ST2 => IF DATAIN="01" THEN NST<=ST3;ELSE NST<=ST2; Q1<="1100"; END IF;WHEN ST3 => IF DATAIN="00" THEN NST<=ST0;ELSE NST<=ST3; Q1<="0010"; END IF;17 ;END PROCESS;Q<=Q1;END;七在下面横线上填上合适的语句;完成减法器的设计..由两个1位的半减器组成一个1位的全减器--1位半减器的描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY HALF_SUB ISPORTA;B : IN STD_LOGIC;DIFF;COUT : OUT STD_LOGIC;END HALF_SUB;ARCHITECTURE ART OF HALF_SUB ISBEGINCOUT<= 18 ; --借位DIFF<= 19 ; --差END ;--1位全减器描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FALF_SUB ISPORTA;B;CIN: IN STD_LOGIC;DIFF;COUT : OUT STD_LOGIC;END FALF_SUB;ARCHITECTURE ART OF FALF_SUB ISCOMPONENT HALF_SUBPORTA;B : IN STD_LOGIC;DIFF;COUT : OUT STD_LOGIC;END COMPONENT;20 T0;T1;T2:STD_LOGIC;BEGINU1: HALF_SUB PORT MAPA;B; 21 ;T1;U2: HALF_SUB PORT MAPT0; 22 ; 23 ;T2; COUT<= 24 ;END ;八在下面横线上填上合适的语句;完成分频器的设计..说明:占空比为1:2的8分频器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CLKDIV8_1TO2 ISPORTCLK:IN STD_LOGIC;CLKOUT:OUT STD_LOGIC ;END CLKDIV8_1TO2;ARCHITECTURE TWO OF CLKDIV8_1TO2 ISSIGNAL CNT:STD_LOGIC_VECTOR1 DOWNTO 0;SIGNAL CK:STD_LOGIC;BEGINPROCESSCLKBEGINIF RISING_EDGE 25 THENIF CNT="11" THENCNT<="00";CK<= 26 ;ELSE CNT<= 27 ;END IF;END IF;CLKOUT<=CK;END PROCESS;END;九在下面横线上填上合适的语句;完成60进制减计数器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNT ISPORTCLK: IN STD_LOGIC;H;L: OUT STD_LOGIC_VECTOR3 DOWNTO 0;END COUNT;ARCHITECTURE BHV OF COUNT ISBEGINPROCESSCLKV ARIABLE HH;LL: STD_LOGIC_VECTOR3 DOWNTO 0; BEGINIF CLK'EVENT AND CLK='1' THENIF LL=0 AND HH=0 THENHH:="0101"; LL:="1001";ELSIF LL=0 THENLL:= 28 ;HH:= 29 ;ELSELL:= 30 ;END IF;END IF;H<=HH;L<=LL;END PROCESS;END BHV;十在下面横线上填上合适的语句;完成4-2优先编码器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CODE4 ISPORTA;B;C;D : IN STD_LOGIC;Y0;Y1 : OUT STD_LOGIC;END CODE4;ARCHITECTURE CODE4 OF CODE4 ISSIGNAL DDD:STD_LOGIC_VECTOR3 DOWNTO 0;SIGNAL Q:STD_LOGIC_VECTOR 31 DOWNTO 0;BEGINDDD<= 32 ;PROCESSDDDBEGINIF DDD0='0' THEN Q <= "11";ELSIF DDD1='0' THEN Q <= "10";ELSIFDDD2='0' THEN Q<="01";ELSE Q <= "00";END IF;33 ;Y1<=Q0; Y0<=Q1;END CODE4;十一在下面横线上填上合适的语句;完成10位二进制加法器电路的设计.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ 34 .ALL;ENTITY ADDER1 ISPORTA;B:IN STD_LOGIC_VECTOR9 DOWNTO 0;COUT:OUT STD_LOGIC;SUM:OUT STD_LOGIC_VECTOR9 DOWNTO 0;END;ARCHITECTURE JG OF ADDER1 ISSIGNAL ATEMP: STD_LOGIC_VECTOR10 DOWNTO 0;SIGNAL BTEMP: STD_LOGIC_VECTOR10 DOWNTO 0;SIGNAL SUMTEMP: STD_LOGIC_VECTOR 35 DOWNTO 0; BEGINATEMP<=’0’& A;BTEMP<=’0’& B;SUMTEMP<= 36 ;SUM<=SUMTEMP9 DOWNTO 0;COUT<= 37 ;END JG;十二在下面横线上填上合适的语句;完成移位寄存器的设计..说明:8位的移位寄存器;具有左移一位或右移一位、并行输入和同步复位的功能.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY SHIFTER ISPORTDATA :IN STD_LOGIC_VECTOR7 DOWNTO 0;CLK:IN STD_LOGIC;SHIFTLEFT;SHIFTRIGHT:IN STD_LOGIC;RESET:IN STD_LOGIC;MODE:IN STD_LOGIC_VECTOR1 DOWNTO 0;QOUT:BUFFER STD_LOGIC_VECTOR7 DOWNTO 0;END SHIFTER;ARCHITECTURE ART OF SHIFTER ISBEGINPROCESSBEGIN38 RISING_EDGECLK; --等待上升沿IF RESET='1' THEN QOUT<="00000000"; --同步复位ELSECASE MODE ISWHEN "01"=>QOUT<=SHIFTRIGHT& 39 ; --右移一位WHEN "10"=>QOUT<=QOUT6 DOWNTO 0& 40 ; --左移一位WHEN "11"=>QOUT<= 41 ; --不移;并行输入WHEN OTHERS=>NULL;42 ;END IF;END PROCESS;END ART;十三在下面横线上填上合适的语句;完成计数器的设计..说明:设计一个带有异步复位和时钟使能的一位八进制加法计数器带进位输出端.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT8 ISPORT CLK;RST;EN : IN STD_LOGIC;CQ : OUT STD_LOGIC_VECTOR 43 DOWNTO 0;COUT : OUT STD_LOGIC ;END CNT8;ARCHITECTURE BEHA V OF CNT8 ISBEGINPROCESSCLK; RST; EN44 CQI : STD_LOGIC_VECTOR2 DOWNTO 0;BEGINIF RST = '1' THEN CQI := “000”;45CLK'EVENT AND CLK='1' THENIF EN = '1' THENIF CQI < "111" THEN CQI := 46 ;ELSE CQI := 47 ;END IF;END IF;END IF;IF CQI = "111" THEN COUT <= '1';ELSE COUT <= '0';END IF;CQ <= CQI;END PROCESS;END BEHA V;十四在下面横线上填上合适的语句;完成序列信号发生器的设计..说明:已知发送信号为”10011010”;要求以由高到低的序列形式一位一位的发送;发送开始前及发送完为低电平..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY XULIE ISPORT RES; CLK: IN STD_LOGIC;Y: OUT STD_LOGIC ;END;ARCHITECTURE ARCH OF XULIE ISSIGNAL REG:STD_LOGIC_VECTOR7 DOWNTO 0;BEGINPROCESSCLK; RESBEGINIFCLK’EVENT AND CLK=’1’ THENIF RES=’1’ THENY<=’0’;REG<= 48 ; --同步复位;并加载输入ELSE Y<= 49 ; --高位输出REG<= 50 ; --左移;低位补0END IF;END IF;END PROCESS;END;十五在下面横线上填上合适的语句;完成数据选择器的设计..说明:采用元件例化的设计方法;先设计一个2选1多路选择器;再使用3个2选1多路选择器构成一个4选1多路选择器..LIBRARY IEEE; --2选1多路选择器的描述USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX21 ISPORTA;B;SEL : IN STD_LOGIC;Y : OUT STD_LOGIC;END MUX21;ARCHITECTURE ART OF MUX21 ISBEGINY<=A WHEN SEL='0' ELSE B;END ;LIBRARY IEEE; --4选1多路选择器的描述USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX41 ISPORTA;B;C;D : IN STD_LOGIC;S1;S2 : IN STD_LOGIC;Y:OUT STD_LOGIC ;END;ARCHITECTURE ART OF MUX41 ISCOMPONENT MUX41PORTA;B;SEL : IN STD_LOGIC;Y : OUT STD_LOGIC;END COMPONENT;51 Y1;Y2:STD_LOGIC;BEGINU1: MUX21 PORT MAPA;B;S1; 52 ;U2: MUX21 PORT MAPC;D; 52 ;Y2;U2: MUX21 PORT MAPY1;Y2; 54 ;Y;END ;十六在下面横线上填上合适的语句;完成8位奇偶校验电路的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY PC ISPORT A : IN STD_LOGIC_VECTOR7 DOWNTO 0;Y : OUT STD_LOGIC ;END PC;ARCHITECTURE A OF PC ISBEGINPROCESSA.V ARIABLE TMP: STD_LOGIC;BEGINTMP 55 '0';FOR I IN 0 TO 7 LOOPTMP:= 56 ;END LOOP;Y<= 57 ;END PROCESS;END;十七在下面横线上填上合适的语句;完成一个逻辑电路的设计;其布尔方程为Y=A+BC⊙D+B⊕F.LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY COMB ISPORTA; B;C;D;E;F;: IN STD_LOGIC;Y: OUT STD_LOGIC;END COMB;ARCHITECTURE ONE OF COMB ISBEGINY<=A OR B AND C 58 D OR B 59 F;END ARCHITECTURE ONE;十八在下面横线上填上合适的语句;完成一个带使能功能的二-十进制译码器的设计.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MY2TO10 ISPORT EN: IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR60 DOWNTO 0;POUT: OUT STD_LOGIC_VECTOR9 DOWNTO 0 ;END;ARCHITECTURE ARCH OF MY2TO10 ISBEGINPROCESSEN; DINBEGINIF EN=’1’ THENCASE DIN ISWHEN "0000" => POUT<="0000000001";WHEN "0001" => POUT<="0000000010";WHEN "0010" => POUT<="0000000100";WHEN "0011" => POUT<="0000001000";WHEN "0100" => POUT<="0000010000";WHEN "0101" => POUT<="0000100000";WHEN "0110" => POUT<="0001000000";WHEN "0111" => POUT<="0010000000";WHEN "1000" => POUT<="010*******";WHEN "1001" => POUT<="1000000000";WHEN OTHERS => POUT<="0000000000";END CASE;END IF;END PROCESS;END;十九在下面横线上填上合适的语句;完成下降沿触发的D触发器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF ISPORTD;CLK:IN STD_LOGIC;Q; QB: OUT STD_LOGIC;END DFF;ARCHITECTURE BEHAVE OF DFF ISBEGINPROCESSCLKBEGINIF 61 AND CLK'EVENT THENQ <=62 ;QB<=NOT D;END IF;END PROCESS;END BEHAVE;二十在下面横线上填上合适的语句;完成移位寄存器的设计..说明:4位串入-串出移位寄存器有有1个串行数据输入端DI、1个串行数据输出输出端DO 和1个时钟输入端CLKLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SISO ISPORTDI: IN STD_LOGIC;CLK:IN STD_LOGIC;DO:OUT STD_LOGIC;END SISO;ARCHITECTURE A OF SISO ISSIGNAL Q: STD_LOGIC_VECTOR3 DOWNTO 0;BEGINPROCESSCLK;DIBEGINIF CLK’ EVENT AND CLK=’1’ THENQ0<=63 ;FOR 64 LOOPQI<=65 ;END IF;END PROCESS;DO<=Q3;END A;二十一在下面横线上填上合适的语句;完成同步22进制计数器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER22 ISPORT CLK: IN STD_LOGIC;CH; C: OUT STD_LOGIC;QB1; QA1: OUT STD_LOGIC_VECTOR3 DOWNTO 0;END;ARCHITECTURE BEHAV OF COUNTER22 ISSIGNAL QB; QA: STD_LOGIC_VECTOR3 DOWNTO 0;SIGNAL CIN: STD_LOGIC;BEGINQB1<=QB;QA1<=QA;PROCESSCLKBEGINIF CLK'EVENT AND CLK='1' THENIF QA=66 OR QB=2 AND QA=1 THEN QA<="0000"; CIN<='0';ELSIF QA=67 THEN CIN<='1'; QA<=QA+1;ELSE QA<=68 ;CIN<='0';END IF;END IF;END PROCESS;PROCESSCIN; CLKBEGINIF CLK'EVENT AND CLK='1' THENIF QB=2 AND QA=1 THEN QB<=69 ; C<='1';ELSE C<=70 ;END IF;IF CIN='1' THEN QB<=71 ;END IF;END IF;END PROCESS;CH<=CIN;END;二十二在下面横线上填上合适的语句;完成一个“01111110”序列发生器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY SENQGEN ISPORTCLK;CLR;CLOCK:IN STD_LOGIC;ZO:OUT STD_LOGIC;END;ARCHITECTURE ART OF SENQGEN ISSIGNAL COUNT:STD_LOGIC_VECTOR2 DOWNTO 0;SIGNAL Z:STD_LOGIC:='0';BEGINPROCESSCLK;CLRBEGINIF CLR='1' THEN COUNT<="000";ELSEIF CLK='1' AND CLK'EVENT THENIF COUNT=72 THEN COUNT<="000";ELSE COUNT<=COUNT+1;END IF;END IF;END IF;END PROCESS;PROCESSCOUNTBEGINCASE COUNT ISWHEN "000"=>Z<='0';WHEN "001"=>Z<='1';WHEN "010"=>Z<='1';WHEN "011"=>Z<='1';WHEN "100"=>Z<='1';WHEN "101"=>Z<='1';WHEN "110"=>Z<='1';WHEN OTHERS=>Z<=73 ;END CASE;END PROCESS;PROCESSCLOCK;ZBEGINIF CLOCK='1' AND CLOCK'EVENT THENZO<=74 ;END IF;END PROCESS;END ART;二十三在下面横线上填上合适的语句;完成一个“01111110”序列信号检测器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DETECT ISPORT DATAIN:IN STD_LOGIC;CLK:IN STD_LOGIC;Q:BUFFER STD_LOGIC;END DETECT;ARCHITECTURE ART OF DETECT ISTYPE STATETYPE IS S0;S1;S2;S3;S4;S5;S6;S7;S8;BEGINPROCESSCLKVARIABLE 75 :76 ;BEGINQ<='0';CASE PRESENT_STATE ISWHEN S0=>IF DATAIN='0' THEN PRESENT_STATE:=S1;ELSE PRESENT_STATE:=S0; END IF;WHEN S1=>IF DATAIN='1' THEN PRESENT_STATE:=S2;ELSE PRESENT_STATE:=S1; END IF;WHEN S2=>IF DATAIN='1' THEN PRESENT_STATE:=S3;ELSE PRESENT_STATE:=S1; END IF;WHEN S3=>IF DATAIN='1' THEN PRESENT_STATE:=S4;ELSE PRESENT_STATE:=S1; END IF;WHEN S4=>IF DATAIN='1' THEN PRESENT_STATE:=S5;ELSE PRESENT_STATE:=S1; END IF;WHEN S5=>IF DATAIN='1' THEN PRESENT_STATE:=S6;ELSE PRESENT_STATE:=S1; END IF;WHEN S6=>IF DATAIN='1' THEN PRESENT_STATE:=S7;ELSE PRESENT_STATE:=S1; END IF;WHEN S7=>IF DATAIN='0' THEN PRESENT_STATE:=S8;Q<='1'; ELSE PRESENT_STATE:=S0; END IF;WHEN S8=>IF DATAIN='0' THEN PRESENT_STATE:=77 ;ELSE PRESENT_STATE:=78 ; END IF;END CASE;79 CLK='1';END PROCESS;END ART;二十四在下面横线上填上合适的语句;完成序列信号发生器的设计..说明:带异步复位为CLR;时钟端为CLK;输出端为Q;串行输出指定序列低位先出.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SENQGEN ISPORTCLR;CLK:IN STD_LOGIC;Q:OUT STD_LOGIC;END SENQGEN;ARCHITECTURE BEHA OF SENQGEN ISSIGNAL Q_TEMP:STD_LOGIC_VECTOR2 DOWNTO 0;BEGINPROCESSCLK;CLRBEGINIF CLR='1' THEN Q_TEMP<="000";80 CLK'EVENT AND CLK='1' THENIF Q_TEMP="111" THEN Q_TEMP<="000";81 Q_TEMP<=Q_TEMP+1;END IF;82 ;END PROCESS;PROCESSQ_TEMPBEGINCASE Q_TEMP ISWHEN "000"=>Q<='0';WHEN "001"=>Q<='1';WHEN "010"=>Q<='0';WHEN "011"=>Q<='1';WHEN "100"=>Q<='1';WHEN "101"=>Q<='1';WHEN "110"=>Q<='1';WHEN "111"=>Q<='0';WHEN OTHERS=>83 ;END CASE;END PROCESS;END BEHA;二十五在下面横线上填上合适的语句;完成七人表决器的设计..说明:一个带输出显示的七人表决器两种结果:同意;反对.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY BIAOJUE7 ISPORTD:IN STD_LOGIC_VECTOR0 TO 6;RLED;GLED:OUT STD_LOGIC;LEDSEG:OUT STD_LOGIC_VECTOR 6 DOWNTO 0;END;ARCHITECTURE BEV OF BIAOJUE7 ISBEGINPROCESSDVARIABLE COUNT:INTEGER RANGE 0 TO 7 ;BEGINCOUNT:=84 ;FOR 85 LOOPIF DI='1' THEN COUNT:=86 ;ELSE COUNT:=COUNT;END IF;END LOOP;IF COUNT>87 THEN GLED<='1'; RLED<='0'; ELSE GLED<='0'; RLED<='1';END IF;CASE COUNT ISWHEN 0=> LEDSEG<="0111111";WHEN 1=> LEDSEG<="0000110";WHEN 2=> LEDSEG<="1011011";WHEN 3=> LEDSEG<="1001111";WHEN 4=> LEDSEG<="1100110";WHEN 5=> LEDSEG<="1101101";WHEN 6=> LEDSEG<="1111101";WHEN 7=> LEDSEG<="0100111";END CASE;END PROCESS;END BEV;二十六在下面横线上填上合适的语句;完成有限状态机的设计..说明:状态转换图如右图;S0~S3为状态号;圈内为输出..LIBRARY 1EEE;USE IEEE.STD_ LOGIC_1164.ALL;PORT CLK;RESET:IN STD_LOGIC;INPUTS :IN STD_LOGIC_VECTOR 0 TO 1;OUTPUTS :OUT INTEGER RANGE 0 TO 15 ;END S_ MACHINE;ARCHITECTURE BEHA V OF S_MACHINE ISTYPE STA TES IS S0; S1; S2; S3;SIGNAL CURCENT_STA TE;NEXT_STA TE:STA TES;BEGINREG: PROCESS RESET;CLK --状态切换BEGINIF RESET = ‘1’ THEN CURRENT_ STATE <= S0;ELSIF CLK=’L’AND CLK‘EVENT THENCURRENT_ STA TE <= NEXT_ STA TE;END IF;END PROCESS;COM:PROCESSCURRENT_ STATE; INPUTS--下一状态、BEGINCASE CURRENT_ STATE ISWHEN S0 => OUTPUTS<= 88 ;IF INPUTS=”00” THEN NEXT_ STA TE<=S0;ELSE NEXT_ STATE<=SL;END IF;WHEN SL=> OUTPUTS<=8;IF INPUTS= 89 THEN NEXT_ STA TE<= 90 ;ELSE NEXT_STATE<=S2;END IF;WHEN S2=> OUTPUTS<=12;IF INPUTS=“11”THEN NEXT_STATE<=S0;ELSE NEXT_STATE<= S3;END IF;WHEN S3=> OUTPUTS<=14;IF INPUTS = “11”THEN NEXT_STA TE <=S3;;ELSE NEXT STATE <=S0;END IF;END CASE;91 ;END BEHA V;二十七在下面横线上填上合适的语句;完成移位寄存器74166的设计.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TTL74166 ISPORT A;B;C;D;E;F;G;H:IN STD_LOGIC; --8位并行输入信号CLK:IN STD_LOGIC; --时钟信号RESET:IN STD_LOGIC; --复位信号SE:IN STD_LOGIC; --串行输入信号FE:IN STD_LOGIC; --时钟信号禁止端SL:IN STD_LOGIC; --移位装载控制端Q:OUT STD_LOGIC; --串行输出信号END TTL74166;ARCHITECTURE ART OF TTL74166 ISSIGNAL TMPREG8:STD_LOGIC_VECTOR7 DOWNTO 0;BEGINPROCESSCLK;RESET;SL;FEBEGINIF RESET='1' THEN TMPREG8<=92 ; Q<=TMPREG87; ELSIF CLK'EVENT AND CLK='1' THENIF FE='0' THENIF SL='0' THENTMPREG80<=A;TMPREG81<=B;TMPREG82<=C;TMPREG83<=D;TMPREG84<=E;TMPREG85<=F;TMPREG86<=G;TMPREG87<=H;93 SL='1' THENFOR I IN TMPREG8'HIGH DOWNTO 94 LOOPTMPREG8I<=95 ;END LOOP;TMPREG8TMPREG8'LOW<=96 ;Q<=97 ;END IF;END IF;END IF;END PROCESS;END ART;二十八在下面横线上填上合适的语句;完成8位双向总线缓冲器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY TRI_BIGATE ISPORT A;B: INOUT STD_LOGIC_VECTOR7 DOWNTO 0;EN; DR: IN STD_LOGIC;END;ARCHITECTURE RTL OF TRI_BIGATE ISSIGNAL AOUT; BOUT:STD_LOGIC_VECTOR7 DOWNTO 0;BEGINPROCESSA; DR; ENBEGIN IF EN=‘0’ AND DR=‘1’ THEN BOUT<=A;ELSEBOUT<=“ZZZZZZZZ”;END IF;B<=BOUT;END PROCESS;PROCESSB; DR; ENBEGINIF EN=‘0’ AND DR=‘0’ THENAOUT<=98 ;ELSEAOUT<=99 ;END IF;A<=100 ;END PROCESS;END;二十九在下面横线上填上合适的语句;完成4位串入/并出移位寄存器的设计.. 说明:4位串入/并出移位寄存器可以用D触发器组成..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF ISPORTD;CLK:IN STD_LOGIC;Q: OUT STD_LOGIC;END DFF;ARCHITECTURE BEHAVE OF DFF ISBEGIN PROCESSCLKBEGINIF CLK= '0' AND CLK'EVENT THEN Q <=D;END IF;END PROCESS;END BEHAVE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHIFT ISPORTA;CLK: IN STD_LOGIC;D : OUT STD_LOGIC;END SHIFT;ARCHITECTURE SHIFT1 OF SHIFT ISCOMPONENT DFF1PORT D;CLK: IN STD_LOGIC;Q: OUT STD_LOGIC;END COMPONENT ;SIGNAL Z:STD_LOGIC_VECTOR0 TO 4;BEGINZ0<=101 ;G1:FOR 102 GENERATEDFFX:DFF1 PORT MAP ZI;CLK;103 ;END GENERATE;D<=104 ;END SHIFT1;三十在下面横线上填上合适的语句;完成4位异步计数器的设计..说明:4位异步计数器可以用D触发器器组成..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY DFF1 ISPORTD;CLK:IN STD_LOGIC;Q; QB: OUT STD_LOGIC;END DFF1;ARCHITECTURE BEHAVE OF DFF1 ISBEGIN PROCESSCLKBEGINIF CLK= '1' AND CLK'EVENT THEN Q <=D; QB<=NOT D;END IF;END PROCESS;END BEHAVE;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY RPLCONT ISPORT CLK : IN STD_LOGIC;COUNT : OUT STD_LOGIC_VECTOR3 DOWNTO 0;END RPLCONT;ARCHITECTURE RPLCONT OF RPLCONT ISCOMPONENT DFF1PORT CLK;D:IN STD_LOGIC;Q;QB:OUT STD_LOGIC;END COMPONENT ;SIGNAL COUNT_IN_BAR:STD_LOGIC_VECTOR4 DOWNTO 0;BEGINCOUNT_IN_BAR0<=CLK;GEN1:FOR I IN 0 TO 3 GENERATEU:DFF1 PORT MAP CLK=>105 ; D=>106 ;Q=>107 ;QB=>108 ;END GENERATE;END RPLCONT;三十一在下面横线上填上合适的语句;完成交通灯控制器的设计..说明:红、黄、绿灯分别亮10秒;状态0时东西绿灯亮;南北红灯亮;状态1时东西绿、黄灯亮;南北红灯亮;状态2时东西红灯亮;南北绿灯亮;状态3时东西红灯亮;南北绿、黄灯亮..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TRAFFICLED1 ISPORT CLK; RESET: IN STD_LOGIC;Q: OUT STD_LOGIC_VECTOR11 DOWNTO 0 ;END;ARCHITECTURE ONE OF TRAFFICLED1 ISSIGNAL Y_EWSN; G_EWSN; R_EWSN:STD_LOGIC_VECTOR3 DOWNTO 0;SIGNAL COUNT:INTEGER RANGE 0 TO 9;SIGNAL STATE:INTEGER RANGE 0 TO 3;BEGINPROCESSRESET; CLK;COUNTBEGINIF RESET='1' THEN COUNT<=0; STATE<=0;ELSIF CLK'EVENT AND CLK='1' THEN COUNT<=COUNT+1;IF COUNT=109 THEN STATE <=STATE+1;END IF;IF STATE>110 THEN STATE <=0;END IF;END IF;CASE STATE ISWHEN 0 => Y_EWSN<="0000"; G_EWSN<="1100"; R_EWSN<="0011";WHEN 1 => Y_EWSN<="1100"; G_EWSN<="1100"; R_EWSN<="0011";WHEN 2 => Y_EWSN<="0000"; G_EWSN<="0011"; R_EWSN<="1100";WHEN 3=> Y_EWSN<="0011"; G_EWSN<="0011"; R_EWSN<="1100";WHEN OTHERS=>111 ;END CASE;END PROCESS;Q0<=R_EWSN0; Q1<=G_EWSN0; Q2<=Y_EWSN0 ;Q3<=R_EWSN2; Q4<=G_EWSN2; Q5<=Y_EWSN2 ;Q6<=R_EWSN1; Q7<=G_EWSN1; Q8<=Y_EWSN1 ;Q9<=R_EWSN3; Q10<=G_EWSN3; Q11<=Y_EWSN3 ;END;三十二在下面横线上填上合适的语句;完成8位数字比较器的设计..ENTITY COMP ISPORTA;B: IN 112 RANGE 0 T0 113 ;AEQUALB; AGREATB; ALESSB : OUT BIT;END COMP;ARCHITECTURE BEHA VE OF COMP ISBEGINAEQUALB<=‘1’WHEN A=B ELSE‘0’;AGREATB<=‘1’WHEN A>B ELSE‘0’;ALESSB<=‘1’WHEN A<B ELSE‘0’;END BEHA VE;三十三在下面横线上填上合适的语句;完成一个16个字节的堆栈的设计..说明:堆栈有复位信号、压栈/弹栈信号、堆栈满信号、数据输入/输出口.. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;ENTITY STACK ISPORTDATAIN : IN STD_LOGIC_VECTOR 7 DOWNTO 0 ;PUSH ; POP ; RESET ; CLK : IN STD_LOGIC;STACKFULL : OUT STD_LOGIC;DATAOUT : BUFFER STD_LOGIC_VECTOR 7 DOWNTO 0 ;END STACK;ARCHITECTURE A OF STACK ISTYPE ARRAYLOGIC IS ARRAY 15 DOWTO 0 OF STD_LOGIC_VECTOR 7 DOWNTO 0 ;--定义一个16字节数据类型SIGNAL DATA : ARRAYLOGIC;-- 此处定义了DA TA为一个数组16×8 SIGNAL STACKFLAG : STD_LOGIC_VECTOR 15 DOWNTO 0 ;--定义堆栈标志;每一字节有数据为1;无数据为0 BEGINSTACKFULL<=114 ; --字节0为栈底PROCESS CLK ; NRESET ; POP ; PUSHBEGINIF RESET = ‘1’ THENSTACKFLAG<=OTHERS => ‘0’ ;DATAOUT<=OTHERS => ‘0’ ;FOR I IN 0 TO 15 LOOPDATA I <=115 ;END LOOP;ELSIF CLK’EVENT AND CLK = ‘1’ THENIF PUSH = ‘1’ AND POP= ‘0’ THEN -- PUSHFOR I IN 0 TO 14 LOOPDATA I <=116 ;END LOOP;DATA 15 <=117 ;STACKFLAG<=‘1’ & STACKFLAG15 DOWNTO 1 ;ELSIF PUSH = ‘0’ AND POP= ‘1’ THEN -- POPDATAOUT<=DA TA 15;FOR I IN 15 DOWNTO 1 LOOPDATA I <=118 ;END LOOP;STACKFLAG<=STACKFLAG 119 DOWNTO 0 & ‘0’;END IF;END IF;END PROCESS;END A;三十四在下面横线上填上合适的语句;完成一个8位分频器的设计..LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PULSE ISPORT CLK : IN STD_LOGIC;D : IN STD_LOGIC_VECTOR 7 DOWNTO 0;FOUT : OUT STD_LOGIC ;END;ARCHITECTURE ONE OF PULSE ISSIGNAL FULL : STD_LOGIC;BEGINP_REG: PROCESSCLK120 CNT8 : STD_LOGIC_VECTOR7 DOWNTO 0;BEGINIF CLK’EVENT AND CLK = ‘1’ THENIF CNT8 = "11111111" THENCNT8 := 121 ; --当CNT8计数计满时;输入数据D被同步预置给计数器CNT8FULL <= '1'; --同时使溢出标志信号FULL输出为高电平ELSE CNT8 := 122 ; --否则继续作加1计数FULL <= '0'; --且输出溢出标志信号FULL为低电平END IF;END IF;END PROCESS P_REG;P_DIV: PROCESS 123VARIABLE CNT2 : STD_LOGIC;BEGINIF FULL'EVENT AND FULL = '1' THENCNT2 <= 124 ; --如果溢出标志信号FULL为高电平;D触发器输出取反IF CNT2 = '1' THEN FOUT <= '1';ELSE FOUT <= '0';END IF;END IF;END PROCESS P_DIV;END;三十五在下面横线上填上合适的语句;完成一个10线-4线优先编码器的设计..LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CODER ISPORT DIN : IN STD_LOGIC_VECTOR9 DOWNTO 0;OUTPUT : OUT STD_LOGIC_VECTOR3 DOWNTO 0 ;END CODER;ARCHITECTURE BEHA V OF CODER ISSIGNAL SIN : STD_LOGIC_VECTOR3 DOWNTO 0;BEGINPROCESS 125BEGINIF DIN9='0' THEN SIN <= "1001" ;126 DIN8=’0’ THEN SIN <= "1000" ;ELSIF DIN7='0' THEN SIN <= "0111" ;ELSIF DIN6='0' THEN SIN <= "0110" ;ELSIF DIN5='0' THEN SIN <= "0101" ;ELSIF DIN4='0' THEN SIN <= "0100" ;ELSIF DIN3='0' THEN SIN <= "0011" ;ELSIF DIN2='0' THEN SIN <= "0010" ;ELSIF DIN1='0' THEN SIN <= "0001" ;ELSE SIN <= 127 ;128 ;END PROCESS ;OUTPUT <= SIN ;END BEHA V;三十六在下面横线上填上合适的语句;完成一个摩尔状态机的设计..说明:状态机的状态图见图A;状态结构图见图B.。
EDA技术与VHDL程序设计基础教程习题答案

EDA技术与VHDL程序设计基础教程习题答案EDA技术与VHDL程序设计基础教程习题答案第1章EDA习题答案1.8.1填空1.EDA的英文全称是Electronic Design Automation2.EDA技术经历了计算机辅助设计CAD阶段、计算机辅助工程设计CAE阶段、现代电子系统设计自动化EDA阶段三个发展阶段3. EDA技术的应用可概括为PCB设计、ASIC设计、CPLD/FPGA 设计三个方向4.目前比较流行的主流厂家的EDA软件有Quartus II、ISE、ModelSim、ispLEVER5.常用的设计输入方式有原理图输入、文本输入、状态机输入6.常用的硬件描述语言有VHDL、V erilog7.逻辑综合后生成的网表文件为EDIF8.布局布线主要完成将综合器生成的网表文件转换成所需的下载文件9.时序仿真较功能仿真多考虑了器件的物理模型参数10.常用的第三方EDA工具软件有Synplify/Synplify Pro、Leonardo Spectrum1.8.2选择1.EDA技术发展历程的正确描述为(A)A CAD->CAE->EDAB EDA->CAD->CAEC EDA->CAE->CADD CAE->CAD->EDA2.Altera的第四代EDA集成开发环境为(C)A ModelsimB MUX+Plus IIC Quartus IID ISE3.下列EDA工具中,支持状态图输入方式的是(B)A Quartus IIB ISEC ispDesignEXPERTD Syplify Pro4.下列几种仿真中考虑了物理模型参数的仿真是(A)A时序仿真B 功能仿真C 行为仿真D 逻辑仿真5.下列描述EDA工程设计流程正确的是(C)A输入->综合->布线->下载->仿真B布线->仿真->下载->输入->综合C输入->综合->布线->仿真->下载D输入->仿真->综合->布线->下载6.下列编程语言中不属于硬件描述语言的是(D)A VHDLB V erilogC ABELD PHP1.8.3问答1.结合本章学习的知识,简述什么是EDA技术?谈谈自己对EDA 技术的认识?答:EDA(Electronic Design Automation)工程是现代电子信息工程领域中一门发展迅速的新技术。
VHDL程序设计教程习题解答

VHDL程序设计教程习题参考解答第1章思考题解答1.什么是VHDL?简述VHDL的发展史。
答:VHDL是美国国防部为电子项目设计承包商提供的,签定合同使用的,电子系统硬件描述语言。
1983年成立VHDL语言开发组,1987年推广实施,1993年扩充改版。
VHDL 是IEEE标准语言,广泛用于数字集成电路逻辑设计。
2.简述VHDL设计实体的结构。
答:实体由实体名、类型表、端口表、实体说明部分和实体语句部分组成。
根据IEEE标准,实体组织的一般格式为:ENTITY 实体名 IS[GENERIC(类型表);] --可选项[PORT(端口表);] --必需项实体说明部分; --可选项[BEGIN实体语句部分;]END [ENTITY] [实体名];3.分别用结构体的3种描述法设计一个4位计数器。
答:用行为描述方法设计一个4位计数器如下,其它描述方法,读者可自行设计。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all;ENTITY countA ISPORT (clk,clr,en:IN STD_LOGIC;Qa,qb,qc,qd:OUT STD_LOGIC);END countA;ARCHITECTURE example OF countA ISSIGNAL count_4:STD_LOGIC_vector (3 DOWNTO 0);BEGINQa <= count_4(0);Qb <= count_4(1);Qc <= count_4(2);Qd <= count_4(3);PROCESS (clk,clr)BEGINIF (clr = '1' ) THENCount_4 <= "0000";ELSIF (clk'EVENT AND clk = '1' ) THENIF (en = '1' ) THENIF (count_4 = "1111") THENcount_4 <= "0000";ELSEcount_4 <= count_4+ '1';END IF;END IF;END IF;END PROCESS;END example;第2章思考题解答1.什么叫对象?对象有哪几个类型?答:在VHDL语言中,凡是可以赋于一个值的客体叫对象(object)。
第3章--作业解答

(3)C1C2=10时, F A B
(4)C1C2=11时, F AB
试设计符合上述要求旳逻辑电路(器件不限)。
解:题目中要求控制信号对不同功能进行选择, 故选用数据选择器实现,分析设计要求,得到 逻辑体现式:
F C1C 2( A B ) C C1 2( AB ) C1C 2( A B ) C1C2( AB )
1
0
1
1
0
1
0
0
0
1
1
1
1
0
0
0
0
0
1
1
1
10
0
1
1
习题3.19 用8选1数据选择器设计一种组合逻
辑电路。该电路有3个输入逻辑变量A、B、C 和1个工作状态控制变量M。当M=0时电路实 现“意见一致”功能(A、B、C状态一致时输出 为1,不然输出为0),而M=1时电路实现“多 数表决”功能,即输出与A、B、C中多数旳状
B1B0 A1A0
00
01
11
10
00 1 0 0
0
B1 B0
01 1
10
0
A B0 1 11 1
1
11
10 1 1 0 1
A1 B1
A1 A0
A1 B0
F1 A1 B1 B1 B0 A1 A0 A1B0 A0 B1
(3)卡诺图化简函数,得到最简与或式
F1 A1 B1 B1 B0 A1 A0 A1B0 A0 B1
outp(0)<='1' WHEN inp="000" ELSE '0'; outp(1)<='1' WHEN inp="001" ELSE '0'; outp(2)<='1' WHEN inp="010" ELSE '0'; outp(3)<='1' WHEN inp="011" ELSE '0'; outp(4)<='1' WHEN inp="100" ELSE '0'; outp(5)<='1' WHEN inp="101" ELSE '0'; outp(6)<='1' WHEN inp="110" ELSE '0'; outp(7)<='1' WHEN inp="111" ELSE '0'; END behave;
最新整理版_EDA技术与VHDL第三章课后习题答案_第3版_潘松_黄继业

第3章 VHDL基础3-1:画出与下例实体描述对应的原理图符号元件:ENTITY buf3s IS -- 实体1:三态缓冲器PORT (input : IN STD_LOGIC ; -- 输入端enable : IN STD_LOGIC ; -- 使能端output : OUT STD_LOGIC ) ; -- 输出端END buf3x ;ENTITY mux21 IS --实体2: 2 选1 多路选择器PORT (in0, in1, sel : IN STD_LOGIC;output : OUT STD_LOGIC);3-1.答案3-2. 图3-30 所示的是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。
3-2.答案LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX41 ISPORT(s:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --输入选择信号a,b,c,d:IN STD_LOGIC; --输入信号y:OUT STD_LOGIC);--输出端END ENTITY;ARCHITECTURE ART OF MUX41 ISBEGINPROCESS(s)BEGINIF (S="00") THEN y<=a;ELSIF (S="01") TH EN y<=b;ELSIF (S="10") TH EN y<=c;ELSIF (S="11") TH EN y<=d;ELSE y<=NULL;END IF;EDN PROCESS;END ART;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX41 ISPORT(s:IN STD_LOGIC_VECTOR(1 DOWNTO 0); --输入选择信号a,b,c,d:IN STD_LOGIC; --输入信号y:OUT STD_LOGIC);--输出端END MUX41;ARCHITECTURE ART OF MUX41 ISBEGINPROCESS(s)BEGINCASE s ISWHEN “00” => y<=a;WHEN “01” => y<=b;WHEN “10” => y<=c;WHEN “11” => y<=d;WHEN OTHERS =>NULL;END CASE;END PROCESS;END ART;3-3. 图3-31 所示的是双 2 选 1 多路选择器构成的电路MUXK,对于其中MUX21A,当s='0'和'1'时,分别有y<='a'和y<='b'。
eda技术及应用第三版课后答案谭会生

eda技术及应用第三版课后答案谭会生【篇一:《eda技术》课程大纲】>一、课程概述1.课程描述《eda技术》是通信工程专业的一门重要的集中实践课,是通信工程专业学生所必须具备的现代电子设计技术技能知识。
eda是电子技术的发展方向,也是电子技术教学中必不可少的内容。
本课程主要介绍可编程逻辑器件在电子电路设计及实现上的应用,介绍电路原理图和pcb图的设计技术。
开设该课程,就是要让学生了解大规模专用集成电路fpga和cpld的结构,熟悉一种以上的硬件描述语言,掌握一种以上的开发工具的使用等,掌握电路原理图和pcb图的现代设计技术与方法,从而提高学生应用计算机对电子电路和高速智能化系统进行分析与设计的能力。
2.设计思路本课程坚持“以学生为中心”的原则,以项目任务驱动的方式,采取理论知识与案例相结合的方式授课,提高学生的学习主动性。
通过必要的理论知识讲授、大量的实践训练和案例分析,培养学生的动手设计和实践能力,掌握eda开发的整个流程和基本技巧。
课程采用演示讲授和实践相结合,边讲边练的方法,让学生切身体会并掌握eda开发产品的流程和方法。
本课程集中2周时间开设,注重实践性,边讲边练,让学生切身体会并掌握eda开发技术。
3.实践要求(1)纪律和安全要求①不得将食物带入实验室,每次实训后请将使用后的废弃物带走。
违反者每次扣罚平时分2分。
②实训期间不得做与实训无关的其他事情,不得大声喧哗或做其他影响实训正常进行的事宜。
违反者每次扣罚平时分2分。
③实训期间,若学生有事不能正常参加实训,须提前以书面形式请假,并按指导教师的安排补做实训。
未经指导教师许可,学生不得任意调换实训时间和实训地点。
违反者每次扣罚平时分4分。
④学生不得以任何理由替代他人进行实训,违者直接取消实训成绩。
⑤学生除操作自己所分配的计算机外,不得操作实验室内其他任何设备。
违者每次扣罚平时分2分。
(2)业务要求实训所使用的软件protel和quartus ii,所有数据均通过服务器中转以及储存在服务器上,所以重启自己所用的电脑不会造成数据丢失。
vhdl_参考答案_上机练习三:时序逻辑电路设计2

vhdl_参考答案_上机练习三:时序逻辑电路设计2VHDL与复杂数字系统设计上机实验3:时序逻辑电路的VHDL程序设计⼀、实验⽬的:1.掌握在Max+plus II开发平台上,使⽤硬件描述语⾔设计电路的基本操作步骤;2.运⽤所学VHDL的描述语句完成⼀种时序逻辑电路的设计。
⼆、要点:时序逻辑电路在电路结构上有两个显著特点:第⼀,时序电路通常包含组合电路和存储电路两个组成部分,⽽且存储电路是必不可少的。
第⼆,存储电路的输出状态必须反馈到组合电路的输⼊端,与输⼊信号⼀起,共同决定组合逻辑电路的输出。
时序电路的信号变化特点:时序电路以时钟信号为驱动;电路内部信号的变化(或输出信号的变化)只发⽣在特定的时钟边沿;其他时刻输⼊信号的变化对电路不产⽣影响;要点:执⾏条件的控制;时钟边沿的检测;1、执⾏条件的控制采⽤进程描述可以有效控制执⾏条件,若进程以时钟信号(clk)为唯⼀敏感信号,则只有当时钟信号变化时,进程才执⾏;在其他时刻,任何输⼊信号的变化对电路(进程)不起作⽤;模版1:process(clock) --敏感信号表中只有时钟beginif rising_edge(clock) then--监测时钟上升沿,若⽤falling_edge(clock) ……--则监测时钟下升沿。
end if;end process;例:时钟上升沿动作的D触发器library ieee;use ieee.std_logic_1164.all;entity dff1 isport(clk, d: in std_logic;q: out std_logic);end dff1;architecture rtl of dff1 isbeginprocess(clk)beginif (clk'event and clk='1') thenq<=d;end if;end process;end rtl;时序逻辑电路的初始状态应由复位(或清零)信号来设置,根据复位信号对时序逻辑电路复位操作的不同,可分为同步复位和异步复位。
(三)VHDL语言的数据类型及运算操作符090914(119)

5. 布尔量(Boolean)
一个布尔量具有两种状态,“真”或者“假”。虽然布尔量也是 二值枚举量,但它和位不同,没有数值的含义,也不能进行算术 运算。它能进行关系运算。例如,它可以在IF语句中被测试,测 试结果产生一个布尔量TRUE或者FALSE。 一个布尔量常用来表示信号的状态或者总线上的情况。如果 某个信号或者变量被定义为布尔量,那么在仿真中将自动地对其 赋值进行核查。这一类型的数据的初始值一般总为FALSE。
【例3-1-b】
PROCESS( A, B, C)
VARIABLE D:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
D:=A; X<=B+D;
结果:X<=B+A; Y<=B+C;
D:=C;
Y<=B+D;
END PROCESS;
进程内的语句是顺序执行的, 由于D是变量,在执行 D:=A后,D=A,接着执行X<=B+D,使得在退出进程后 X=B+A 。接着执行D:=C 和 Y<=B+D ,使D=C,退出时, Y=B+C。
信号赋值语句举例: X<= y; a <= ‘1’; s1 <= s2 AFTER 10 ns;
3.1.4 信号和变量的主要区别
1) 赋值符不同 信号和变量的赋值符不同,如果一个值要赋给信号应用
代入符“<=”;而变量赋值则用赋值符“:=”。
信号和变量可以互相赋值,此时赋值符应根据左边被赋 值量的类型来确定。如果被赋值是信号应用代入符“<=”;如 果是变量,则应用赋值符“:=”。
例如: CONSTANT VCC: REAL:=5.0; CONSTANT DALY: TIME:=100 ns; CONSTANT FBUS: BIT_VECTOR:="0101";
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
填空题1、一个标准的VHDL语言程序由库、实体和结构体组成。
2、个完整的VHDL语言描述是以对一个功能元件的完整描述为基础的3、实体相当于电路图中一个器件符号。
4、端口说明( PORT )是对设计实体与外部接口的描述,也可以说是设计实体的外部引脚的名称,它为实体与外部环境的动态通信提供通道5、缓冲( BUFFER )端口描述模式和 INOUT 双向模式的区别在于只能接受一个驱动源,不允许多重驱动。
6、 VHDL语言的结构体的这些子结构互相之间是并行的。
7、将 VHDL语言的行为描述语句转换为门级描述由VHDL开发工具自动完成,是VHDL 语言综合器的任务。
8、数据流描述也称为RTL (寄存器传输级)描述方式,它类似于布尔方程,它既表示某种行为,又隐含结构信息,主要指非结构化的并行语句描述。
9、在结构描述中,元件间的连接是通过定义的端口界面来实现的。
10、结构描述的缺点是程序表示的是电路的结构连接关系,不能直观的得到设计电路的逻辑功能。
综述题1、写出实体的结构。
答案:ENTITY 实体名IS[GENERIC( 类属表 );][PORT( 端口表 );]END ENTITY实体名;2 、在 IEEE 库中定义了哪四种VHDL 语言的端口模式?答案:IN :输入。
OUT :输出。
INOUT :双向,输入输出。
BUFFER :缓冲,其实质也是双向的,但是只能接受一个驱动源。
3、写出结构体的结构。
?2 ?答案:ARCHITECTURE 结构体名OF 实体名IS[ 说明语句 ]BEGIN[ 功能描述语句]END ARCHITECTURE结构体名;4 、写出结构体的功能性描述语句的5 种子结构。
答案:块语句、进程语句、子程序调用语句、信号赋值语句和元件例化语句。
5 、 VHDL 有哪四种描述风格?答案:行为描述、数据流描述、结构描述以及由前三种组合的混合描述。
实验题实验【一】编写一个实体实验目的:熟悉实体的编写方法。
实验任务:在 Quartus II 中建立一个 VHDL 语言文件,编写一个实体,该实体要求如下:实体名: TEST 。
输入端口: INPUTA , INPUTB ,数据类型为BIT 。
输出端口: OUTPUT ,数据类型为BIT 。
没有类属说明。
答案:ENTITY TEST IS -- 实体PORT(INPUTA,INPUTB: in bit; OUTPUT: out bit); --2 个输入引脚,类型BIT--1 个输出引脚,类型BITEND TEST;实验【二】编写一个结构体实验目的:熟悉结构体的编写方法。
? 3 ?实验任务:在 Quartus II 中建立一个 VHDL 语言文件,编写一个结构体,该结构体要求如下:实体名: TEST 。
结构体名: RTL 。
没有功能描述语句。
答案:ARCHITECTURE RTL OF TEST IS-- 结构体,名称为RTL ,对应实体为TESTBEGIN--无逻辑语句END RT;?4 ?第一章EDA 开发技术基础在EDA 开发中,用户以计算机为工具,在对应的集成开发环境中,用硬件描述语言完成设计文件,然后由计算机自动地完成逻辑编译、综合、优化、布局、布线和仿真等工作,并且对于特定目标芯片进行适配编译、逻辑映射和编程下载。
本章将介绍EDA 开发技术的基础知识,包括EDA 的发展历史、可编程逻辑语言的分类和特点,可编程逻辑器件的种类和开发方法,使用EDA 进行设计的流程等。
1.1 EDA 技术基础EDA 是电子设计自动化(Electronic Design Automation )的缩写,是在20 世纪 60 年代中期从计算机辅助设计( CAD )、计算机辅助制造( CAM )、计算机辅助测试( CAT )和计算机辅助工程( CAE )的概念发展而来的。
1.1.1EDA 技术简介EDA 技术是现代电子信息工程领域中一门发展迅速的新技术。
它是以计算机为工作平台,其以EDA 软件工具为开发环境,以硬件描述语言为主要表达方式,以大规模可编程器件为设计载体,以ASIC 、SOC、FPGA 芯片为目标器件,以电子系统设计为应用方向的电子产品自动化设计过程。
EDA 技术有广义和狭义之分。
从广义来说EDA技术包括半导体工艺设计自动化、可编程器件设计自动化、电子系统设计自动化、印制电路板设计自动化、仿真与测试故障诊断自动化等,例如PSPICE、EWB 、MATLAB等计算机辅助分析CAA 技术和 PROTEL 、ORCAD 等印刷制版计算机辅助设计等。
从狭义来说EDA技术就是电子设计自动化,即通过相关的开发软件,自动完成用软件方式设计的电子系统到硬件系统的逻辑编译、化简、分割、综合、优化、以及布局布线、逻辑仿真等工作,最终完成对于特定目标芯片的适配编译、逻辑映射、编程下载,从而形成集成电子系统,不包含电子生产自动化。
EDA 技术在电子系统设计中具有以下特点,所以的到了广泛应用:● 用软件的方式设计硬件。
● 用软件方式设计的系统到硬件系统的转换是由相关软件自动完成的。
● 在设计过程中可以用软件进行各种仿真进行验证。
●现代 EDA 工具具有高层综合和优化功能,能够在系统级进行综合、优化和方针,从而缩短设计周期,提高工作效率。
● 系统可以现场编程,在线升级。
? 5 ?第二章Quartus II 集成开发环境Altera公司的Quartus Ⅱ集成开发环境根据设计者的需求提供了一个完整的多平台开发环境,其包含了整个可编程逻辑器件设计阶段的所有解决方案,提供了完整的图形用户界面可以完成可编程片上系统的整个开发流程的各个阶段,包括输入、综合、仿真等,在其中设计者可以方便的完成数字系统设计的全过程。
本章将介绍如何在Quartus II 集成开发环境应用VHDL语言进行数字系统的开发。
注意: Quartus II 集成开发环境的最新版是V12.0 ,但是在最新版中其去掉了直接输入波形文件进行仿真的功能,取而代之的是使用ModelSim 的仿真文件进行仿真,为了便于读者快速上手学习,不增加难度,本书采用了依然可以使用波形文件进行仿真的V9.1版本,读者可以在Altera 的网站上免费下载到该版本的Web Edtion 版;另外值得一说的是 Quartus II 有完整版和Web Edtion 两个版本,前者收费而后者收费,前者对于后者而言只是多了很多内部集成的IP 核,所以对于普通入门级用户而言直接下载免费使用的后者即可。
2.1 Quartus II 应用基础设计输入包括基于块的设计、系统级设计和软件开发综合布局、布线调试时序分析工程变动管理仿真时序逼近编程、配置图 1.2Quartus Ⅱ设计流程?6 ?第三章VHDL 语言基础VHDL语言的应用程序都是由几个固定的部分组成的,通常来说缺一不可,并且其代码会具有一些固定的样式即描述风格。
本章以一个使用VHDL语言来实现三态门的简单实例来介绍VHDL语言程序的一些基础知识,包括VHDL语言的组成,VHDL语言的实体, VHDL 语言的结构体和VHDL 语言的描述风格等。
3.1 VHDL 语言程序的结构和普通的应用语言程序一样, VHDL 语言的程序也有自己的结构,或者说组成部分。
一个简单的用 VHDL 语言实现的三态门如例 3.1 所示,各个语句对应的模块结构如右侧注释所示。
【例 3.1 】一个简单的VHDL语言程序和其结构LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;IEEE 库使用说明ENTITY tri_gate ISPORT(DIN,EN:IN std_logic;DOUT:OUT std_logic); END tri_gate;ARCHITECTURE rtl OF tri_gate IS BEGINPROCESS(DIN,EN)BEGINIF(EN='1') THENDOUT<=DIN;ELSEDOUT<='Z';END IF;END PROCESS; END rtl;器件外部接口信号实体:说明,相当于器件的引脚器件内部工作逻辑结构体:描述,即为实体描述的器件功能结构该应用代码对应的RTL 文件如图 3.1 所示。
? 7 ?第四章VHDL 语言的基本要素和其他编程语言一样,硬件描述语言VHDL 也有自己的文字规则。
作为编程语句的基本单元, VHDL语言的语言要素反映了其重要的语言特点。
能够正确理解的文字规则和熟练掌握VHDL语言要素的基本含义及用法,是利用VHDL VHDL 语言硬件描述语言进行数字系统设计的基础,本章将就这些方面进行详细的介绍。
4.1 VHDL 语言文字的命名规范使用 VHDL 语言进行数字系统设计,必须在编程过程中严格遵守VHDL文字规则,如其特有的表达方式等,VHDL 语言的文字(Literal )主要包括数值型文字和标识符。
● 数值型文字:包括数字型、字符串型和位串型。
● 标识符:用于定义常数、变量、信号、子程序或参数的名字。
4.1.1数值型文字数值型文字的值主要有以下几种表达方式:●整数型文字:整数文字都是十进制的数,如:1,123,987 ,518E2 ,12_345_678等。
其中,下划线并无特殊含义,其唯一的作用就是增加文字的可读性,且不影响文字本身的值。
● 实数型文字:实数型文字与整数型文字一样都是十进制的数,但是他必须带有小数点。
如:12.3, 34.502, 0.0 ,6.5E-2 ( =0.065 ), 123_456.789_321 等。
● 以数制基数表示的文字:用这种表示方法的文字由五部分构成。
第一部分,用十进制数来表示的数制基数;第二部分,数制隔离符号“#”;第三部分,要表达的文字的数值表示;第四部分,指数隔离符号“#”;第五部分,用十进制表示的指数部分,当指数为0 时,这部分可以省略不写,如下所示:SIGNAL A,B,C : INTEGER RANGE 0 TO 255;A <=B <= 2#1100_1111#;10#158#2;-- 表示二进制计数,即十进制的-- 表示十进制计数,且指数为2072,即十进制的158*158C <= 8#375#; -- 表示八进制计数,即十进制的253●物理量文字:此类型文字带有单位,如60s,1km ,300pf描述中,可以进行行为仿真,但是在综合时被忽略,不能被等。
这些文字用于行为VHDL综合器综合形成与之对应的硬件结构。
注意:在这些数值型文字中,整数可综合实现,实数一般不能被综合,而物理量则完全不可综合。
?8 ?第五章VHDL 语言的顺序描述语句从执行顺序上划分,VHDL 语言可以分为顺序描述语句(Sequential Statements )和并行描述语句( Concurrent Statements )两大类,前者在执行过程中是按照书写顺序依次执行的,而后者则是在同一时间同步执行的,在本章将详细地介绍顺序描述语句,包括其特点和分类以及赋值语句、代入语句和流程控制语句等顺序描述语句的使用方法。