十六、VHDL程序改错
仔细阅读下列程序,回答问题
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY LED7SEG IS PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK : IN STD_LOGIC; LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END LED7SEG; ARCHITECTURE one OF LED7SEG IS SIGNAL TMP : STD_LOGIC; BEGIN SYNC : PROCESS(CLK, A) BEGIN IF CLK'EVENT AND CLK = '1' THEN TMP <= A; END IF; END PROCESS; OUTLED : PROCESS(TMP) BEGIN CASE TMP IS WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ END CASE; END PROCESS; END one;
1. 在程序中存在两处错误,试指出,并说明理由: 2. 修改相应行的程序:
错误1 行号: 程序改为: 错误2 行号: 程序改为:
十八、VHDL程序改错
仔细阅读下列程序,回答问题
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY LED7SEG IS PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0); CLK : IN STD_LOGIC;
15
-- 1 -- 2 -- 3 -- 4 -- 5 -- 6 -- 7 -- 8 -- 9 -- 10 -- 11 -- 12 -- 13 -- 14 -- 15 -- 16 -- 17 -- 18 -- 19 -- 20 -- 21 -- 22 -- 23 -- 24 -- 25 -- 26 -- 27 -- 28 -- 29 -- 30 -- 31 -- 32
-- 1 -- 2 -- 3 -- 4 -- 5
LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END LED7SEG; ARCHITECTURE one OF LED7SEG IS SIGNAL TMP : STD_LOGIC; BEGIN SYNC : PROCESS(CLK, A) BEGIN IF CLK'EVENT AND CLK = '1' THEN TMP <= A; END IF; END PROCESS; OUTLED : PROCESS(TMP) BEGIN CASE TMP IS WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ WHEN \ END CASE; END PROCESS; END one; -- 6
-- 7 -- 8 -- 9 -- 10 -- 11 -- 12 -- 13 -- 14 -- 15 -- 16 -- 17 -- 18 -- 19 -- 20 -- 21 -- 22 -- 23 -- 24 -- 25 -- 26 -- 27 -- 28 -- 29 -- 30 -- 31 -- 32
1. 在程序中存在两处错误,试指出,并说明理由: 第14行 TMP附值错误
第29与30行之间,缺少WHEN OTHERS语句 2. 修改相应行的程序:
错误1 行号: 9 程序改为:
TMP : STD_LOGIC_VECTOR(3 DOWNTO 0); 错误2 行号: 29 程序改为:
该语句后添加 WHEN OTHERS => LED7S <= \
十九、判断程序题(格式有点问题,部分段落分页)
1、判断题 library ieee;
use ieee.std_logic_arith.all;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
以上库和程序包语句有无错误? 有 ,有的话请在原程序相应位置改正。(2)
entity rom is
16
port( addr: in std_logic_vector(0 to 3); ce: in std_logic; data:out std_logic_vector(7 downto 0); ) end rom;
以上port语句有无错误? 有 ,有的话请在原程序相应位置改正。(4)
architecture behave of rom is begin
process(ce,addr) begin if ce='0' then case addr is when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\
(6) when \ data<=\ when \ data<=\ when others=> data<=\ end case; 17
else data:=\“00000000”; (8) end if; (10) end process; end behave;
以上architecture中有哪些错误?请在原程序相应位置改正。
2、判断题(10分) library ieee;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all; use ieee.std_logic_1164.all;
以上库和程序包语句有无错误? 有 ,有的话请在原程序相应位置改正。
entity rom is port( addr: in std_logic_vector(0 to 3); ce: in std_logic; data:out std_logic_vector(7 downto 0) ; ) end rom;
以上port语句有无错误? 有 ,有的话请在原程序相应位置改正。 (4)
architecture behave of rom is begin
process(ce,addr) (6) begin if ce='0' then case addr is data<=\ when \ when \ data<=\ data<=\ when \ when \ data<=\ data<=\ when \ when \ data<=\ data<=\ when \ when \
(2) data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when \ data<=\ when others=> data<=\end case;
1