10.下列EDA软件中,哪一个不具有逻辑综合功能:____ B ____。 A. Max+Plus II B. ModelSim C. Quartus II D. Synplify
二、EDA名词解释,写出下列缩写的中文(或者英文)含义:(14分) 1. LPM 参数可定制宏模块库 2. RTL 寄存器传输级
3. UART 串口(通用异步收发器) 4. ISP 在系统编程
5. IEEE 电子电气工程师协会 6. ASIC 专用集成电路 7. LAB 逻辑阵列块 三、VHDL程序填空:(10分)
LIBRARY IEEE; -- 8位分频器程序设计
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PULSE IS
PORT ( CLK: IN STD_LOGIC;
D : IN STD_LOGIC_VECTOR (7 DOWNTO 0); FOUT: OUT STD_LOGIC ); END;
ARCHITECTURE one OF PULSE IS SIGNAL FULL : STD_LOGIC; BEGIN
P_REG: PROCESS(CLK)
VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN
IF CLK’EVENT AND CLK = ‘1’ THEN IF CNT8 = \
CNT8 := D; --当CNT8计数计满时,输入数据D被同步预置给计数器CNT8 FULL <= '1'; --同时使溢出标志信号FULL输出为高电平 ELSE CNT8 := CNT8 + 1; --否则继续作加1计数
FULL <= '0'; --且输出溢出标志信号FULL为低电平 END IF; END IF;
END PROCESS P_REG; P_DIV: PROCESS(FULL)
VARIABLE CNT2 : STD_LOGIC; BEGIN
IF FULL'EVENT AND FULL = '1' THEN
CNT2 <= NOT CNT2; --如果溢出标志信号FULL为高电平,D触发器输出取反 IF CNT2 = '1' THEN FOUT <= '1'; ELSE FOUT <= '0'; END IF; END IF;
END PROCESS P_DIV; END;
四、VHDL程序改错:(10分) 01 LIBRARY IEEE ;
02 USE IEEE.STD_LOGIC_1164.ALL ; 03 USE IEEE.STD_LOGIC_UNSIGNED.ALL; 04 ENTITY LED7CNT IS
05 PORT ( CLR : IN STD_LOGIC; 06 CLK : IN STD_LOGIC;
07 LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ; 08 END LED7CNT;
09 ARCHITECTURE one OF LED7CNT IS
10 SIGNAL TMP : STD_LOGIC_VECTOR(3 DOWNTO 0); 11 BEGIN
12 CNT:PROCESS(CLR,CLK) 13 BEGIN
14 IF CLR = '1' THEN 15 TMP <= 0;
16 ELSE IF CLK'EVENT AND CLK = '1' THEN 17 TMP <= TMP + 1; 18 END IF; 19 END PROCESS;
20 OUTLED:PROCESS(TMP) 21 BEGIN
22 CASE TMP IS
23 WHEN \
24 WHEN \25 WHEN \26 WHEN \27 WHEN \28 WHEN \29 WHEN \30 WHEN \31 WHEN \32 WHEN \33 WHEN OTHERS => LED7S <= (OTHERS => '0'); 34 END CASE; 35 END PROCESS; 36 END one;
在程序中存在两处错误,试指出,并说明理由:
提示:在MAX+PlusII 10.2上编译时报出的第一条错误为:
Error:Line 15: File ***/led7cnt.vhd: Type error: type in waveform element must be “std_logic_vector”
第 15 行, 错误:整数0不能直接赋值给TMP矢量 改正:TMP <= (OTHERS => ‘0’);
第 16 行, 错误:ELSE IF 缺少一条对应的END IF语句 改正:将ELSE IF 改为关键字ELSIF 第2页 共5页 五、VHDL程序设计:(16分)
设计一数据选择器MUX,其系统模块图和功能表如下图所示。试采用下面三种方式中的两种来描述该数据选择器MUX的结构体。
(a) 用if语句。 (b) 用case 语句。 (c) 用when else 语句。 Library ieee;
Use ieee.std_logic_1164.all;
Entity mymux is
Port ( sel : in std_logic_vector(1 downto 0); -- 选择信号输入 Ain, Bin : in std_logic_vector(1 downto 0); -- 数据输入 Cout : out std_logic_vector(1 downto 0) ); End mymux;
Architecture one of mymux is Begin
Process (sel, ain, bin) Begin
If sel = “00” then cout <= ain and bin; Elsif sel = “01” then cout <= ain xor bin; Elsif sel = “10” then cout <= not ain; Else cout <= not bin; End if;