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";
第3章_VHDL语言程序的基本结构

VARIABLE tmp1,tmp2,tmp3:BIT;
BEGIN tmp1:=d0 AND sel;
构造体
tmp2:=d1 AND (NOT sel);
tmp3:=tmp1 OR tmp2;
tmp<=tmp3;
q<=tmp AFTER m;
END PROCESS cale;
END ARCHITECTURE connect;
该 例 中 BIT 类 型 用 STD_LOGIC 说 明 , 而 bus 则 用 STD_LOGIC_VECTOR(7 DOWNTO 0)说明。 在用STD_LOGIC和STD_LOGIC_VECTOR说明时,在实体说明以前 必须增加例中所示的两个语句,以便在对VHDL语言程序编译时,从 指定库的包集合中寻找数据类型的定义。
END BLOCK cale; END connect;
END ARCHITECTURE behav;
信号定义和端口说明的语句一样,应有信号名和 数据类型的说明。因它是内部连接用的信号,故没有 也不需要有方向说明。
3、 并行处理语句
并行处理语句处于语句BEGIN和END之间,这 些语句具体地描述了构造体的行为及其连接关系。例 如,二选一的数据流方式描述可以写为:
第三章 VHDL语言程序的基本结构
VHDL语言程序的五个组成部分
库说明
包集合说明
基 实体说明
本 单
元 构造体描述
配置语句
库存放已编译的实体、构造体、包集合、和配 置。相当于书库。 包集合存放各设计模块能共享的数据类型、常数和 子程序。相当于书架。
实体用于说明所设计的系统的外部接口信号。
构造体用于描述系统内部的结构和行为。
第三章VHDL的语句VHDL中的语句按其执行顺序可分为顺序描述语句和

第三章VHDL的语句VHDL中的语句按其执行顺序可分为顺序描述语句和并行描述语句两大类。
顺序描述语句的执行顺序是按语句的书写顺序依次执行的,常用于实现模块的算法部分;并行描述语句的执行顺序与书写顺序无关,所有语句是并发执行的,常用于表示模块间的连接关系。
本章将详细介绍这两类VHDL语句。
3.1 VHDL语言的顺序描述语句顺序语句是建模进程、过程和函数功能的基本语句单元,它只能在进程、过程和函数中使用,其执行顺序按照书写顺序来执行,同时前面语句的执行结果会对后面语句的执行结果产生影响。
顺序描述语句按照控制方式分为条件控制语句和迭代控制语句,其中,条件控制语句有IF语句和CASE语句,迭代控制语句有循环语句和顺序断言语句。
下面对顺序描述语句进行详细介绍。
3.1.1 信号赋值语句与变量赋值语句采用VHDL描述硬件电路的过程中,数据的传递和端口界面数据的读写都是通过赋值语句来实现的,赋值语句就是将一个数值或表达式传递给某一个数据对象的语句。
VHDL 提供了两类赋值语句:信号赋值语句和变量赋值语句。
信号虽然只能在VHDL程序的并行部分进行说明,但是它在程序的顺序部分和并行部分都可使用。
信号赋值语句的语法如下:待赋值信号<=表达式;变量的说明和赋值操作都只能在程序的顺序部分进行。
变量赋值语句的语法如下:待赋值变量:=表达式;注意:不论是信号还是变量,赋值符号两边必须具备相同的数据类型和位长。
在前一章我们讲过信号与变量的区别,这里有必要重申一下:信号赋值的执行和信号值的更新之间是有一定延迟的,只有经过延迟后信号才能得到新值,否则保持原值;而变量赋值的语句执行后立即得到新值,没有延迟。
上面讲到,信号赋值会有延迟,其实,VHDL允许为信号赋值选择“延迟机制”,即:传输延迟或惯性延迟,其中,传输延迟用于表示无论输入脉冲宽度多窄都能在输出端无失真复现的延迟模型;惯性延迟用于表示输入脉冲传播时间受电路“惯性”影响的延迟模型。
数字电子技术基础第三版第三章答案

答:VHDL的覆盖面广,描述能力强,是一个多层次的硬件描述语言,VHDL已成为IEEE承认的一个工业标准,是一种通用的硬件描述语言。
VHDL有良好的可读性,可以被计算机接受,也容易被读者理解,VHDL源文件既是程序又是技术人员之间交换信息的文件,也可作为合同签约者之间的文件;VHDL的生命周期长,因为VHDL硬件描述与工艺无关;VHDL支持大规模设计的分解和已有设计的再利用。
对于译码器每一组输入编码,在若干个输出中仅有一个输出端为有效电平,其余输出皆处于无效电平,这类译码器称为变量译码器。常用的有2-4线译码器、3-8线译码器、4-10线8421BCD译码器等。
在数字电路中,需要将数字量的代码经过译码,送到数字显示器显示。能把数字量翻译成数字显示器能识别的译码器称为数字显示译码器,常用的有七段显示译码器。
F=
=
函数F的或非门电路如思考题图(c)所示。
题 什么叫竞争-冒险现象当门电路的两个输入端同时向相反的逻辑状态转换(即一个从0变成1,另一个从1变成0)时,输出是否一定有干扰脉冲产生
答:竞争指的是一个门电路多个输入信号同时跳变,或者一个信号经过不同路径传到同一个门电路的输入端导致信号到达时间不同的现象。冒险指的是由于竞争可能在电路输出端产生的毛刺现象。当门电路的两个输入端同时向相反的逻辑状态转换时,输出不一定有干扰脉冲产生。
组合逻辑电路的设计是根据实际逻辑问题,求出实现相应逻辑功能的最简单或者最合理的数字电路的过程。逻辑电路的设计步骤如下:
首先分析设计要求,建立真值表,选择所用门的类型,将逻辑表达式化为最简形式,或者变换为最合理的表达式,最后画出逻辑图。
题 组合逻辑电路如思考题图(a)所示。
(1)写出函数F的表达示。
《VHDL应用教程》课后习题参考答案

第1章绪论1.1电子设计自动化1.2EDA技术,是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术。
1.31、用软件的方式设计硬件。
2、用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的。
3、设计过程中可用有关软件进行各种仿真。
4、系统可现场编程,在线升级。
5、整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
因此,EDA技术是现代电子设计的发展趋势。
1.4可编程逻辑器件(Programmable Logic Device,PLD)是一种由用户编程以实现某种逻辑功能的新型逻辑器件。
FPGA和CPLD分别是现场可编程门阵列和复杂可编程逻辑器件的简称。
1.51、自顶向下设计方法是一种模块化设计方法。
它对设计的描述从上到下,逐步由粗略到详细,符合常规的逻辑思维习惯。
由于高层设计与器件无关,设计易于在各种集成电路工艺或可编程器件之间移植。
2、适合多个设计者同时进行设计。
随着技术的不断进步,许多设计由一个设计者已无法完成,而必须经过多个设计者分工协作来完成。
在这种情况下,应用自顶向下的设计方法便于多个设计者同时进行设计,对设计任务进行合理分配,并用系统工程的方法对设计进行管理。
第2章可编程逻辑器件2.1按结构的复杂程度分类、按互连结构分类、按可编程特性分类、按可编程器件的编程元件分类2.2主动串行配置式、主动并行配置模式、外设配置模式、从动串行配置模式、菊花链配置模式2.31、编程单元。
查找表型FPGA的编程单元为SRAM结构,可以无限次编程,但它属于易失性元件,掉电后芯片内的信息会丢失;而CPLD则采用EEPROM编程单元,不仅可无限次编程,且掉电后片内的信息不会丢失。
VHDL习题解答

V H D L习题解答(共15页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--VHDL 程序设计教程习题参考解答第一章习题参考答案1.什么是VHDLVHDL的实现有哪几种形态硬件描述语言(Hardware Description Language,HDL),顾名思义,是电子系统硬件行为描述、结构描述、数据流描述的语言。
VHDL语言的英文全名是Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言。
2.简述VHDL的发展史。
1981年6月VHDL工作小组成立,提出了一个满足电子设计各种要求的能够作为工业标准的硬件描述语言。
1983年第三季度,由IBM公司、TI公司、Inter metrics公司签约,组成开发小组,工作任务是提出语言版本和开发软件环境。
1986年IEEE标准化组织开始工作,讨论VHDL语言标准,历时一年有余,于1987年12月通过标准审查,版本宣布实施,即IEEE STD 1076-1987。
1993年经过重新修订,发布版本,从而形成新的标准即IEEE STD 1076-1993。
2006年VHDL发布版本;2008年8月,VHDL 版本发布,解决了版本中发现的多个问题。
2009年1月,IEEE公布了VHDL 的标准版本,最新VHDL标准IEEE 1076-2008在2009年1月实施。
3. 详述VHDL设计IP模块的流程。
第1种设计形态,VHDL程序以IP模块的形态存在,VHDL-IP设计流程如图所示。
IP模块是与集成电路工艺无关的芯片设计方案,可以移植到不同的设计环境。
IP产品形态有规范,有IP包装规则和复用规则,是原生态的芯片硬件设计产品。
图 VHDL-IP设计流程4. 简答VHDL设计用FPGA实现的意义。
可编程器件FPGA具有容量大、密度高等特点,是科学实验、小批量生产、样机研制的载体。
硬件描述语言(VHDL)

(1)体内配置指定
(2)体外配置说明
由于体外配置语句是一个独立的编译单位, 故需给它指定一个单位名—配置名。实体 名和结构体名为需对例元做配置的实体及 相应的结构体。
(3)直接例化
二. VHDL语言的数据对象,数据类型
TYPE week IS(sum,mon,tue,wed,thu,fri,sat);
2.整数,实数(Integer,Real)类型 格式:TYPE 数据类型名 IS 数据类型定义约束范围
TYPE twos IS INTEGER RANGE –32768 TO 32767; TYPE voltage IS REAL RANGE 0.0 TO 10.0;
结构体的子结构描述:
BLOCK,PROCESS,SUBPROGRAM三种语句结构
1. BLOCK语句结构描述
格式: 块结构名: BLOCK BEGIN ….
END BLOCK 块结构名;
在对程序进行仿真时,BLOCK语句中所描述的各个语 句是可以并发执行的,它与书写顺序无关。 卫式BLOCK语句的格式::BLOCK [卫式布尔表达式]; 当卫式布尔表达式为真时,BLOCK语句执行。
为了能重复使用这些函数和过程,这些程 序通常组织在包集合库中。 (1)多个过程和函数汇集在一起就构成一个 包集合(Package)。 (2)n个包集合汇集在一起就形成一个库 (Library)。
(三) 包集合,库及配置
1.库(Library):它是一个经过编译后的数据的集合, 存放包集合EE库,STD库,ASIC矢量库, WORK库,用户定义库。
第三章 VHDL语言要素

(3) 下划线前后都必须有英文字母或数字。
(4) 英文字母不区分大小写 (5)不能连续使用下划线“_”,最后一个符号也 不能用下划线 (6) 不允许包含图形符号、空格符
3.3 VHDL语言要素
注意:
EDA工具综合、仿真时,不区分大小写。
对VHDL的保留字(关键字)不能做标识符: ENTITY , ARCHITECTURE , END , BUS,USE,WHEN,WAIT,IS…
常量说明: 对某一常量名赋予的一个固定值。
格式如下: CONSTANT 常数名:数据类型 [:=表达式]; 例: CONSTANT width:integer:=8; CONSTANT x:new_bit:=’x’;
CONSTANT data:bit_vector(3 downto 0):="1010";
举例如下:
SIGNAL a, b:BIT :=‘0‟;
SIGNAL count:bit_vector(7 downto 0); SIGNAL init:integer :=-1; SIGNAL count:std_logic:= „0‟ ;
3.3 VHDL语言要素
注:1)信号初始值仿真时有用,综合被忽略 2)信号是全局量,可在结构体、实体、块 中说明和使用信号。 3)在进程和子程序中只能使用信号,不能 说明信号。 4)变量赋值用“:=” , 信号赋值用“<=” 5)变量执行后,立即被赋值;信号实际代 入过程和代入语句的处理是分开的
3.3 VHDL语言要素
用户在做电子系统设计时,自行定义的 数据类型:
(1) 枚举类型 (ENUMERATED TYPE)
(2) 数组类型 (ARRAY TYPE)
《EDA技术与VHDL基础》课后习题答案

《EDA技术与VHDL基础》课后习题答案第一章EDA技术概述一、填空题1、电子设计自动化2、非常高速集成芯片硬件描述语言3、CAD、CAE、EDA4、原理图输入、状态图输入、文本输入5、VHDL、Verilog HDL6、硬件特性二、选择题1、A2、C3、A4、D5、C6、D7、A第二章可编程逻辑器件基础一、填空题1、PLD2、Altera公司、Xilinx公司、Lattice公司3、基于反熔丝编程的FPGA4、配置芯片二、选择题1、D2、C3、C4、D第三章VHDL程序初步——程序结构一、填空题1、结构、行为、功能、接口2、库和程序包、实体、结构体、配置3、实体名、类型表、端口表、实体说明部分4、结构体说明语句、功能语句5、端口的大小、实体中子元件的数目、实体的定时特性6、设计库7、元件、函数8、进程PROCESS、过程PROCEDURE9、顺序语句、并行语句二、选择题1、D2、C3、C4、B5、D6、B7、A8、C三、简答题2、LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY nand_3in ISPORT(a,b,c:IN STD_LOGIC;y:OUT STD_LOGIC);END;ARCHITECTURE bhv OF nand_3in ISBEGINy<=NOT(a AND b AND c);END bhv;5、00006、11110111(247)第四章VHDL基础一、填空题1、顺序语句、并行语句2、跳出本次循环3、等待、信号发生变化时4、函数、过程5、值类属性、函数类属性、信号类属性、数据类型类属性、数据范围类属性6、程序调试、时序仿真7、子程序、子程序二、选择题1、B2、A3、A4、C5、B6、C7、D三、判断题1、√2、√3、√4、√5、×6、×四、简答题9、修改正确如下所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY count ISPORT(clk:IN BIT;q:OUT BIT_VECTOR(7 DOWNTO 0)); END count;ARCHITECTURE a OF count ISBEGINPROCESS(clk)IF clk'EVENT AND clk='1' THENq<=q+1;END PROCESS;END a;10、修改正确如下所示:…SIGNAL invalue:IN INTEGER RANGE 0 TO 15; SIGNAL outvalue:OUT STD_LOGIC;…CASE invalue ISWHEN 0=>outvalue<='1';WHEN 1=>outvalue<='0';WHEN OTHERS=>NULL;END CASE;…11、修改正确如下所示:ARCHITECTURE bhv OF com1 ISBEGINSIGNAL a,b,c:STD_LOGIC;pro1:PROCESS(clk)BEGINIF NOT (clk'EVENT AND clk='1') THENx<=a XOR b OR c;END IF;END PROCESS;END;12、(1) PROCESS(…) --本题中两条IF语句均为信号c进行可能赋值,VHDL语言不允许IF a=b THENc<=d;END IF;IF a=4 THENc<=d+1;END IF;END PROCESS;(2)ARCHITECTURE behave OF mux IS --同时为q进行多次可能赋值,VHDL语言不允许BEGINq<=i0 WHEN a='0' AND b='0' ELSE '0'; --WHEN ELSE语句语法错误q<=i1 WHEN a='0' AND b='1' ELSE '0';q<=i2 WHEN a='1' AND b='0' ELSE '0';q<=i3 WHEN a='1' AND b='1' ELSE '0';END behave;13、next1<=1101 WHEN (a='0' AND b='0') ELSEd WHEN a='0' ELSEc WHEN b='1' ELSE1011;15、(1)、STD_LOGIC_UNSIGNED(2)、GENERIC(3)、IN(4)、width-1(7)(5)、counter_n(6)、“00000000”(7)、clk’EVENT AND clk=’1’(8)、ELSIF(9)、END IF(10)、q<= count16、修改正确如下所示:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CNT10 ISPORT ( clk: IN STD_LOGIC;q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END CNT10;ARCHITECTURE bhv OF CNT10 ISSIGNAL q1 : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS (clk)BEGINIF RISING_EDGE(clk) begin –begin修改为THENIF q1 < 9 THEN --q1为STD_LOGIC数据类型,而9为整型不可直接比较q1 <= q1 + 1; -- q1为STD_LOGIC数据类型,而1为整型不可直接相加ELSEq1 <= (OTHERS => '0');END IF;END IF;END PROCESS;q <= q1;END bhv;17、使用IF语句实现LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21 ISPORT(ain,bin,sel:IN STD_LOGIC_VECTOR(1 DOWNTO 0);cout:OUT STD_LOGIC_VECTOR(1 DOWNTO 0));END;ARCHITECTURE bhv OF mux21 ISSIGNAL cout_tmp:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGINPROCESS(ain,bin,sel)BEGINIF (sel="00") THEN cout_tmp<=ain OR bin;ELSIF (sel="01") THEN cout_tmp<=ain XOR bin;ELSIF (sel="10") THEN cout_tmp<=ain AND bin;ELSE cout_tmp<=ain NOR bin;END IF;END PROCESS;cout<=cout_tmp;END bhv;第五章QuartusⅡ集成开发软件初步一、填空题1、实体名2、FPGA、CPLD3、.vhd4、输入、综合、适配、仿真、下载5、RTL Viewer、Technology Map Viewer6、功能、参数含义、使用方法、硬件描述语言、模块参数设置7、mif、hex8、根目录二、选择题1、C2、D第七章有限状态机设计一、设计题1、LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ztj ISPORT(clk,reset:IN STD_LOGIC;in_a:IN STD_LOGIC_VECTOR(1 DOWNTO 0);out_a:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END;ARCHITECTURE bhv OF ztj ISTYPE state IS(s0,s1,s2,s3); --用枚举类型定义状态,简单直观SIGNAL current_state,next_state:state; --定义存储现态和次态的信号BEGINp1:PROCESS(clk) --状态更新进程BEGINIF clk'EVENT AND clk='1' THENIF reset='1' THEN current_state<=s0;ELSE current_state<=next_state;END IF;END IF;END PROCESS;p2:PROCESS(current_state,in_a) --次态产生进程BEGINCASE current_state ISWHEN s0=>IF in_a/=”00” THEN next_state<=s1;ELSE next_state<=s0;END IF;WHEN s1=>IF in_a=/'”01” THEN next_state<=s2;ELSE next_state<=s1;END IF;WHEN s2=>IF in_a=”11” THEN next_state<=s0ELSE next_state<=s3;END IF;WHEN s3=>IF in_a/='11' THEN next_state<=s0;ELSE next_state<=s3;END IF;WHEN OTHERS=>NULL;END CASE;END PROCESS;p3:PROCESS(current_state)BEGINCASE current_state ISWHEN s0=>out_a<='”0101”;WHEN s1=>out_a<=”1000”;WHEN s2=>out_a<=”1100”;WHEN s3=>out_a<=”1101”;WHEN OTHERS=>NULL;END CASE;END PROCESS;END;2、LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ztj ISPORT(clk,reset:IN STD_LOGIC;ina:IN STD_LOGIC_VECTOR(2 DOWNTO 0);outa:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END;ARCHITECTURE bhv OF ztj ISTYPE state IS(s0,s1,s2,s3); --用枚举类型定义状态,简单直观SIGNAL current_state,next_state:state;BEGINp1:PROCESS(clk) --状态更新进程BEGINIF clk'EVENT AND clk='1' THENIF reset='1' THEN current_state<=s0;ELSE current_state<=next_state;END IF;END IF;END PROCESS;p2:PROCESS(current_state,ina)BEGINCASE current_state ISWHEN s0=> IF ina =”101” THEN outa<=”0010”;ELSIF ina=”111” THEN outa <=”1100”;END IF;IF ina =”000” THEN next_state<=s1;ELSE next_state<=s0;END IF;WHEN s1=> outa<=”1001”;IF ina =”110” THEN next_state<=s2;ELSE next_state<=s1;END IF;WHEN s2=> outa<=”1111”;IF ina =”011” THEN next_stat e<=s1;ELSIF ina =”100” THEN next_state<=s2;ELSE next_state<=s3;END IF;WHEN s3=> IF ina =”101” THEN outa<=”1101”;ELSIF ina=”011” THEN outa <=”1100”;END IF;IF ina =”010” THEN next_state<=s0;ELSE next_state<=s1;END IF;WHEN OTHERS=>NULL;END CASE;END PROCESS;END;3、LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ztj ISPORT(clk,reset:IN STD_LOGIC;ina:IN STD_LOGIC_VECTOR(1 DOWNTO 0);outa:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END;ARCHITECTURE bhv OF ztj ISTYPE state IS(s0,s1,s2,s3); --用枚举类型定义状态,简单直观SIGNAL state:istate;BEGINp1:PROCESS(clk)BEGINIF clk'EVENT AND clk='1' THENIF reset='1' THEN state<=s0;result<='0';ELSECASE state ISWHEN s0=>outa<=”0000”;IF ina=”00” THEN state<=s1;ELSE state<=s0;END IF;WHEN s1=> outa <=”0001”;IF ina=”01” THEN state<=s2;ELSE state<=s1;END IF;WHEN s2=> outa <=”1100”;IF ina=”11” THEN state<=s3;ELSE state<=s0;END IF;WHEN s3=> outa <=”1111”;IF ina=”00” THEN state<=s0;ELSE state<=s3;END IF;WHEN OTHERS=>NULL;END CASE;END IF;END IF;END PROCESS;END;第九章VHDL基本逻辑电路设计一、填空题1、输入信号、所处状态2、组合逻辑、时序逻辑3、触发器、14、D触发器、RS触发器、JK触发器、T触发器二、选择题1、A2、C。
第3章 VHDL语言基础

Verilog:Cadence公司开发
ABEL(Advanced Boolean Hardware Description, 高级布尔方程语言) :Lattice公司 AHDL(Analog模拟硬件描述语言): Altera公司
第二节
VHDL的基本结构
通过与非门的逻辑描述,阐述VHDL的基本结构
第三节 VHDL结构体的子结构
4位计数器
module count4(out,reset,clk);
output[3:0] out;
input reset,clk; reg[3:0] out; always @(posedge clk) begin if(reset) out<=0; //同步复位 else end endmodule out<=out+1; //计数
Nand_2实体说明
结构体
BEGIN y <= NOT (a AND b);
END rtl;
1. 库说明
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;
语法: library 库名
use 库名.程序包名.项目名:
库是用VHDL语言编写的源程序及其通过编译 的数据集合,它由各种程序包组成,程序包提供了 各种数据类型、函数的定义以及各种类型转换函数 及运算等,以供给设计者使用。
库序项库是用vhdl语言编写的源程序及其通过编译的数据集合它由各种程序包组成程序包提供了各种数据类型函数的定义以及各种类型转换函数及运算等以供给设计者使用
第三章 硬件描述语言HDL Hardware Description Language
- 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 )两大类,前者在执行过程中是按照书写顺序依次执行的,而后者则是在同一时间同步执行的,在本章将详细地介绍顺序描述语句,包括其特点和分类以及赋值语句、代入语句和流程控制语句等顺序描述语句的使用方法。