【正文】
SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0)。6 Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)) 。2 USE 。 在程序中存在兩處錯(cuò)誤,試指出,并說明理由:提示:在MAX+PlusII :Error:Line 15: File ***/: Type error: type in waveform element must be “std_logic_vector”第 15 行, 錯(cuò)誤:整數(shù)0不能直接賦值給TMP矢量改正:TMP = (OTHERS = ‘0’)。35 END PROCESS。)。33 WHEN OTHERS = LED7S = (OTHERS = 39。31 WHEN 1000 = LED7S = 1111111 。29 WHEN 0110 = LED7S = 1111101 。27 WHEN 0100 = LED7S = 1100110 。25 WHEN 0010 = LED7S = 1011011 。 20 OUTLED:PROCESS(TMP)21 BEGIN 22 CASE TMP IS23 WHEN 0000 = LED7S = 0111111 。18 END IF。139。16 ELSE IF CLK39。139。 09 ARCHITECTURE one OF LED7CNT IS10 SIGNAL TMP : STD_LOGIC_VECTOR(3 DOWNTO 0)。07 LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) 。04 ENTITY LED7CNT IS05 PORT ( CLR : IN STD_LOGIC。02 USE 。 then ,如果編譯時(shí)出現(xiàn)“Can’t open VHDL “WORK” ”這樣的錯(cuò)誤提示。event and clk = 39。 363. 在上述程序代碼中存在兩處錯(cuò)誤,編譯時(shí)出現(xiàn)如下提示,試修改錯(cuò)誤:Error: Line 12: File f:\eda\: VHDL syntax error: unexpected signal “d” in Concurrent Statement PartError: Line 29:File f:\eda\: VHDL syntax error: if statement must have END IF, but found PROCESS instead錯(cuò)誤1 行號(hào):11 程序改為:d = 11100101。 34 end process。 32 else ab = 1011。 28 end process。 26 end case。 end if。 24 when 7 = if din = d(0) then q = 8。 else q = 0。 end if。 22 when 5 = if din = d(2) then q = 6。 else q = 0。 end if。 20 when 3 = if din = d(4) then q = 4。 else q = 0。 end if。 18 when 1 = if din = d(6) then q = 2。 else q = 0。139。 15 else if clk39。139。 8位待檢測(cè)預(yù)置數(shù) 10begin 11 d = 11100101。 7architecture bhv of schk is 8 signal q : integer range 0 to 8。 串行輸入數(shù)據(jù)位/工作時(shí)鐘/復(fù)位信號(hào) 4 ab : out std_logic_vector(3 downto 0) 檢測(cè)結(jié)果輸出 5 )。 1use 。 WHEN OTNERS= LED7S = 1111111四、VHDL程序改錯(cuò):(10分),仔細(xì)閱讀程序,回答問題。 1. 在程序中存在兩處錯(cuò)誤,試指出,并說明理由:在MAX+PlusII中編譯時(shí),提示的錯(cuò)誤為:Error: Line 14: File f:\upload\eda\maxplusii\my_proj\s8_5\: Type error: type in waveform element must be std_ulogicError: Line 19: File f:\upload\eda\maxplusii\my_proj\s8_5\: VHDL syntax error: expected choices in case statement2. 修改相應(yīng)行的程序(如果是缺少語句請(qǐng)指出大致的行數(shù)):錯(cuò)誤1 行號(hào): 9 程序改為:SIGNAL TMP : STD_LOGIC VECTOR(3 DOWN TO 0)。 30 END PROCESS。 28 WHEN 1001 = LED7S = 1101111。 26 WHEN 0111 = LED7S = 0000111。 24 WHEN 0101 = LED7S = 1101101。 22 WHEN 0011 = LED7S = 1001111。 20 WHEN 0001 = LED7S = 0000110。 15 END PROCESS。 THEN 13 TMP = A。EVENT AND CLK = 39。 7ARCHITECTURE one OF LED7SEG IS 8 SIGNAL TMP : STD_LOGIC。 5 LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0))。 2ENTITY LED7SEG IS 3PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0)。四、VHDL程序改錯(cuò):(10分)仔細(xì)閱讀下列程序,回答問題LIBRARY IEEE。 ELSE SIN = “0000” 。039。) THEN SIN = 0010 。 ELSIF (din(2)=39。039。) THEN SIN = 0100 。 ELSIF (din(4)=39。039。) THEN SIN = 0110 。 ELSIF (din(6)=39。039。 ELSIF (din(8)=’0’) THEN SIN = 1000 。039。ARCHITECTURE behav OF CODER IS SIGNAL SIN : STD_LOGIC_VECTOR(3 DOWNTO 0)。 output : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) )。USE 。三、VHDL程序填空:(10分)下面程序是一個(gè)10線-4線優(yōu)先編碼器的VHDL描述,試補(bǔ)充完整。 END PROCESS P_DIV。 END IF。 ELSE FOUT = 39。 THEN FOUT = 39。 如果溢出標(biāo)志信號(hào)FULL為高電平,D觸發(fā)器輸出取反 IF CNT2 = 39。139。 BEGIN IF FULL39。 END PROCESS P_REG。 且輸出溢出標(biāo)志信號(hào)FULL為低電平 END IF。 否則繼續(xù)作加1計(jì)數(shù) FULL = 39。139。 BEGIN IF CLK’EVENT AND CLK = ‘1’ THEN IF CNT8 = 11111111 THEN CNT8 := D。ARCHITECTURE one OF PULSE IS SIGNAL FULL : STD_LOGIC。 FOUT : OUT STD_LOGIC )。ENTITY PULSE IS PORT ( CLK : IN STD_LOGIC。 8位分頻器程序設(shè)計(jì)USE 。end behav。 c = ________。 end if。 then int := 39。length – 1 downto 0 loop 循環(huán)判斷 if a(i) = 39。 變量聲明 begin int := _____。end。 類屬參數(shù)聲明 port ( a : in std_logic_vector( ______ downto 0)。use 。三、VHDL程序填空:(10分)下面程序是n輸入與門的VHDL描述,試補(bǔ)充完整。 qb = _reg8__。 end if。 then ――移位使能 reg8(6 downto 0) = reg8(7 doento1) 。 elsif en=39。139。 then ――異步清零 reg8 = others=’0’ 。begin process (clk, RST , load, en) begin if rst=39。end sreg8b。 din : in _STD_LOGIC_VECTOR(7 downto 0)。entity sreg8b is port ( clk, rst : in std_logic。