文档库 最新最全的文档下载
当前位置:文档库 › VHDL程序练习题(含答案)

VHDL程序练习题(含答案)

VHDL程序练习题(含答案)
VHDL程序练习题(含答案)

VHDL程序填空题

(一) 在下面横线上填上合适的VHDL关键词,完成2选1多路选择器的设计。LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

1 MUX21 IS

PORT(SEL:IN STD_LOGIC;

A,B:IN STD_LOGIC;

Q: OUT STD_LOGIC );

END MUX21;

2 BHV OF MUX21 IS

BEGIN

Q<=A WHEN SEL=’1’ EL SE B;

END BHV;

(二) 在下面横线上填上合适的语句,完成BCD-7段LED显示译码器的设计。LIBRARY IEEE ;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY BCD_7SEG IS

PORT( BCD_LED : IN STD_LOGIC_VECTOR(3 DOWNTO 0);

LEDSEG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0));

END BCD_7SEG;

ARCHITECTURE BEHAVIOR OF BCD_7SEG IS

BEGIN

PROCESS(BCD_LED)

3

IF 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 BEHAVIOR;

(三) 在下面横线上填上合适的语句,完成数据选择器的设计。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY MUX16 IS

PORT( D0, D1, D2, D3: IN STD_LOGIC_VECTOR(15 DOWNTO 0);

SEL: IN STD_LOGIC_VECTOR( 6 DOWNTO 0);

Y: OUT STD_LOGIC_VECTOR(15 DOWNTO 0));

END;

ARCHITECTURE ONE OF MUX16 IS

BEGIN

WITH 7 SELECT

Y <= D0 WHEN "00",

D1 WHEN "01",

D2 WHEN "10",

D3 WHEN 8 ;

END;

(四) 在下面横线上填上合适的语句,完成JK触发器的设计。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY JKFF1 IS

PORT (PSET,CLR,CLK,J,K : IN STD_LOGIC;

Q : OUT STD_LOGIC);

END JKFF1;

ARCHITECTURE MAXPLD OF JKFF1 IS

SIGNAL TEMP:STD_LOGIC;

BEGIN

PROCESS(PSET,CLR,CLK)

BEGIN

IF (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') THEN

10 (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 IS

PORT(EN,CLR,LD,CLK:IN STD_LOGIC;

D: IN STD_LOGIC_VECTOR(3 DOWNTO 0);

Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END CNT6;

ARCHITECTURE BEHA OF CNT6 IS

SIGNAL QTEMP:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(CLK,CLR,LD)

BEGIN

IF 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 ; --否则,计数值减1

END 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 IS

PORT (DATAIN: IN STD_LOGIC_VECTOR(1 DOWNTO 0);

CLK, RST:IN STD_LOGIC;

Q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END;

ARCHITECTURE ONE OF MOORE1 IS

TYPE ST_TYPE IS (ST0, ST1, ST2, ST3); --定义4个状态

SIGNAL CST, NST: ST_TYPE; --定义两个信号(现态和次态)SIGNAL Q1:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

REG: PROCESS(CLK, RST) --主控时序进程

BEGIN

IF RST='1' THEN CST<= 15 ; --异步复位为状态0

ELSIF CLK'EVENT AND CLK='1' THEN

CST<= 16 ; --现态=次态

END IF;

END PROCESS;

COM: PROCESS(CST, DATAIN)

BEGIN

CASE CST IS

WHEN 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 IS

PORT(A,B : IN STD_LOGIC;

DIFF,COUT : OUT STD_LOGIC);

END HALF_SUB;

ARCHITECTURE ART OF HALF_SUB IS

BEGIN

COUT<= 18 ; --借位

DIFF<= 19 ; --差

END ;

--1位全减器描述

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY FALF_SUB IS

PORT(A,B,CIN: IN STD_LOGIC;

DIFF,COUT : OUT STD_LOGIC);

END FALF_SUB;

ARCHITECTURE ART OF FALF_SUB IS

COMPONENT HALF_SUB

PORT(A,B : IN STD_LOGIC;

DIFF,COUT : OUT STD_LOGIC);

END COMPONENT;

20 T0,T1,T2:STD_LOGIC;

BEGIN

U1: HALF_SUB PORT MAP(A,B, 21 ,T1);

U2: HALF_SUB PORT MAP(T0, 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 IS

PORT(CLK:IN STD_LOGIC;

CLKOUT:OUT STD_LOGIC );

END CLKDIV8_1TO2;

ARCHITECTURE TWO OF CLKDIV8_1TO2 IS

SIGNAL CNT:STD_LOGIC_VECTOR(1 DOWNTO 0);

SIGNAL CK:STD_LOGIC;

BEGIN

PROCESS(CLK)

BEGIN

IF RISING_EDGE( 25 ) THEN

IF CNT="11" THEN

CNT<="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 IS

PORT(CLK: IN STD_LOGIC;

H,L: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)

);

END COUNT;

ARCHITECTURE BHV OF COUNT IS

BEGIN

PROCESS(CLK)

VARIABLE HH,LL: STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

IF CLK'EVENT AND CLK='1' THEN

IF LL=0 AND HH=0 THEN

HH:="0101"; LL:="1001";

ELSIF LL=0 THEN

LL:= 28 ;

HH:= 29 ;

ELSE

LL:= 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 IS

PORT(A,B,C,D : IN STD_LOGIC;

Y0,Y1 : OUT STD_LOGIC);

END CODE4;

ARCHITECTURE CODE4 OF CODE4 IS

SIGNAL DDD:STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL Q:STD_LOGIC_VECTOR( 31 DOWNTO 0);

BEGIN

DDD<= 32 ;

PROCESS(DDD)

BEGIN

IF (DDD(0)='0') THEN Q <= "11";

ELSIF (DDD(1)='0') THEN Q <= "10";

ELSIF(DDD(2)='0') THEN Q<="01";

ELSE Q <= "00";

END IF;

33 ;

Y1<=Q(0); Y0<=Q(1);

END CODE4;

(十一) 在下面横线上填上合适的语句,完成10位二进制加法器电路的设计。LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ 34 .ALL;

ENTITY ADDER1 IS

PORT(A,B:IN STD_LOGIC_VECTOR(9 DOWNTO 0);

COUT:OUT STD_LOGIC;

SUM:OUT STD_LOGIC_VECTOR(9 DOWNTO 0));

END;

ARCHITECTURE JG OF ADDER1 IS

SIGNAL ATEMP: STD_LOGIC_VECTOR(10 DOWNTO 0);

SIGNAL BTEMP: STD_LOGIC_VECTOR(10 DOWNTO 0);

SIGNAL SUMTEMP: STD_LOGIC_VECTOR( 35 DOWNTO 0); BEGIN

ATEMP<=’0’& A;BTEMP<=’0’& B;

SUMTEMP<= 36 ;

SUM<=SUMTEMP(9 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 IS

PORT(DATA :IN STD_LOGIC_VECTOR(7 DOWNTO 0);

CLK:IN STD_LOGIC;

SHIFTLEFT,SHIFTRIGHT:IN STD_LOGIC;

RESET:IN STD_LOGIC;

MODE:IN STD_LOGIC_VECTOR(1 DOWNTO 0);

QOUT:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0));

END SHIFTER;

ARCHITECTURE ART OF SHIFTER IS

BEGIN

PROCESS

BEGIN

38 (RISING_EDGE(CLK)); --等待上升沿

IF RESET='1' THEN QOUT<="00000000"; --同步复位ELSE

CASE MODE IS

WHEN "01"=>QOUT<=SHIFTRIGHT& 39 ; --右移一位WHEN "10"=>QOUT<=QOUT(6 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 IS

PORT (CLK,RST,EN : IN STD_LOGIC;

CQ : OUT STD_LOGIC_VECTOR( 43 DOWNTO 0);

COUT : OUT STD_LOGIC );

END CNT8;

ARCHITECTURE BEHAV OF CNT8 IS

BEGIN

PROCESS(CLK, RST, EN)

44 CQI : STD_LOGIC_VECTOR(2 DOWNTO 0);

BEGIN

IF RST = '1' THEN CQI := “000”;

45 CLK'EVENT AND CLK='1' THEN

IF EN = '1' THEN

IF 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 BEHAV;

(十四) 在下面横线上填上合适的语句,完成序列信号发生器的设计。

说明:已知发送信号为”10011010”,要求以由高到低的序列形式一位一位的发送,发送开始前及发送完为低电平。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY XULIE IS

PORT (RES, CLK: IN STD_LOGIC;

Y: OUT STD_LOGIC );

END;

ARCHITECTURE ARCH OF XULIE IS

SIGNAL REG:STD_LOGIC_VECTOR(7 DOWNTO 0);

BEGIN

PROCESS(CLK, RES)

BEGIN

IF(CLK’EVENT AND CLK=’1’) THEN

IF RES=’1’ THEN

Y<=’0’;REG<= 48 ; --同步复位,并加载输入ELSE Y<= 49 ; --高位输出

REG<= 50 ; --左移,低位补0

END 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 IS

PORT(A,B,SEL : IN STD_LOGIC;

Y : OUT STD_LOGIC);

END MUX21;

ARCHITECTURE ART OF MUX21 IS

BEGIN

Y<=A WHEN SEL='0' ELSE B;

END ;

LIBRARY IEEE; --4选1多路选择器的描述

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY MUX41 IS

PORT(A,B,C,D : IN STD_LOGIC;

S1,S2 : IN STD_LOGIC;

Y:OUT STD_LOGIC) ;

END;

ARCHITECTURE ART OF MUX41 IS

COMPONENT MUX41

PORT(A,B,SEL : IN STD_LOGIC;

Y : OUT STD_LOGIC);

END COMPONENT;

51 Y1,Y2:STD_LOGIC;

BEGIN

U1: MUX21 PORT MAP(A,B,S1, 52 );

U2: MUX21 PORT MAP(C,D, 52 ,Y2);

U2: MUX21 PORT MAP(Y1,Y2, 54 ,Y);

END ;

(十六) 在下面横线上填上合适的语句,完成8位奇偶校验电路的设计。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY PC IS

PORT ( A : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

Y : OUT STD_LOGIC );

END PC;

ARCHITECTURE A OF PC IS

BEGIN

PROCESS(A).

VARIABLE TMP: STD_LOGIC;

BEGIN

TMP 55 '0';

FOR I IN 0 TO 7 LOOP

TMP:= 56 ;

END LOOP;

Y<= 57 ;

END PROCESS;

END;

(十七)在下面横线上填上合适的语句,完成一个逻辑电路的设计,

其布尔方程为Y=(A+B)(C⊙D)+(B⊕F).

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY COMB IS

PORT(A, B,C,D,E,F,: IN STD_LOGIC;

Y: OUT STD_LOGIC);

END COMB;

ARCHITECTURE ONE OF COMB IS

BEGIN

Y<=(A OR B) AND (C 58 D) OR (B 59 F);

END ARCHITECTURE ONE;

(十八)在下面横线上填上合适的语句,完成一个带使能功能的二-十进制译码器的设计。LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY MY2TO10 IS

PORT (EN: IN STD_LOGIC;

DIN: IN STD_LOGIC_VECTOR( 60 DOWNTO 0);

POUT: OUT STD_LOGIC_VECTOR(9 DOWNTO 0) );

END;

ARCHITECTURE ARCH OF MY2TO10 IS

BEGIN

PROCESS(EN, DIN)

BEGIN

IF EN=’1’ THEN

CASE DIN IS

WHEN "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 IS

PORT(D,CLK:IN STD_LOGIC;

Q, QB: OUT STD_LOGIC);

END DFF;

ARCHITECTURE BEHAVE OF DFF IS

BEGIN

PROCESS(CLK)

BEGIN

IF 61 AND CLK'EVENT THEN

Q <= 62 ;

QB<=NOT D;

END IF;

END PROCESS;

END BEHAVE;

(二十)在下面横线上填上合适的语句,完成移位寄存器的设计。

说明:4位串入-串出移位寄存器有有1个串行数据输入端(DI)、1个串行数据输出输出端(DO)和1个时钟输入端(CLK)

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY SISO IS

PORT(DI: IN STD_LOGIC;

CLK:IN STD_LOGIC;

DO:OUT STD_LOGIC);

END SISO;

ARCHITECTURE A OF SISO IS

SIGNAL Q: STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(CLK,DI)

BEGIN

IF CLK’ EVENT AND CLK=’1’ THEN

Q(0)<= 63 ;

FOR 64 LOOP

Q(I)<= 65 ;

END IF;

END PROCESS;

DO<=Q(3);

END A;

(二十一)在下面横线上填上合适的语句,完成同步22进制计数器的设计。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY COUNTER22 IS

PORT( CLK: IN STD_LOGIC;

CH, C: OUT STD_LOGIC;

QB1, QA1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END;

ARCHITECTURE BEHAV OF COUNTER22 IS

SIGNAL QB, QA: STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL CIN: STD_LOGIC;

BEGIN

QB1<=QB;

QA1<=QA;

PROCESS(CLK)

BEGIN

IF CLK'EVENT AND CLK='1' THEN

IF (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;

PROCESS(CIN, CLK)

BEGIN

IF CLK'EVENT AND CLK='1' THEN

IF (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 IS

PORT(CLK,CLR,CLOCK:IN STD_LOGIC;

ZO:OUT STD_LOGIC);

END;

ARCHITECTURE ART OF SENQGEN IS

SIGNAL COUNT:STD_LOGIC_VECTOR(2 DOWNTO 0);

SIGNAL Z:STD_LOGIC:='0';

BEGIN

PROCESS(CLK,CLR)

BEGIN

IF CLR='1' THEN COUNT<="000";

ELSE

IF CLK='1' AND CLK'EVENT THEN

IF COUNT= 72 THEN COUNT<="000";

ELSE COUNT<=COUNT+1;

END IF;

END IF;

END IF;

END PROCESS;

PROCESS(COUNT)

BEGIN

CASE COUNT IS

WHEN "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;

PROCESS(CLOCK,Z)

BEGIN

IF CLOCK='1' AND CLOCK'EVENT THEN

ZO<= 74 ;

END IF;

END PROCESS;

END ART;

(二十三)在下面横线上填上合适的语句,完成一个“01111110”序列信号检测器的设计。

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY DETECT IS

PORT( DATAIN:IN STD_LOGIC;

CLK:IN STD_LOGIC;

Q:BUFFER STD_LOGIC);

END DETECT;

ARCHITECTURE ART OF DETECT IS

TYPE STATETYPE IS (S0,S1,S2,S3,S4,S5,S6,S7,S8);

BEGIN

PROCESS(CLK)

VARIABLE 75 : 76 ;

BEGIN

Q<='0';

CASE PRESENT_STATE IS

WHEN 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;

EDA技术与VHDL程序设计基础教程习题答案

EDA技术与VHDL程序设计基础教程习题答案 第1章EDA习题答案 1.8.1填空 1.EDA的英文全称是Electronic Design Automation 2.EDA技术经历了计算机辅助设计CAD阶段、计算机辅助工程设计CAE阶段、现代电子系统设计自动化EDA阶段三个发展阶段 3. EDA技术的应用可概括为PCB设计、ASIC设计、CPLD/FPGA设计三个方向 4.目前比较流行的主流厂家的EDA软件有Quartus II、ISE、ModelSim、ispLEVER 5.常用的设计输入方式有原理图输入、文本输入、状态机输入 6.常用的硬件描述语言有VHDL、V erilog 7.逻辑综合后生成的网表文件为EDIF 8.布局布线主要完成将综合器生成的网表文件转换成所需的下载文件 9.时序仿真较功能仿真多考虑了器件的物理模型参数 10.常用的第三方EDA工具软件有Synplify/Synplify Pro、Leonardo Spectrum 1.8.2选择 1.EDA技术发展历程的正确描述为(A) A CAD->CAE->EDA B EDA->CAD->CAE C EDA->CAE->CAD D CAE->CAD->EDA 2.Altera的第四代EDA集成开发环境为(C) A Modelsim B MUX+Plus II C Quartus II D ISE 3.下列EDA工具中,支持状态图输入方式的是(B) A Quartus II B ISE C ispDesignEXPERT

D Syplify Pro 4.下列几种仿真中考虑了物理模型参数的仿真是(A) A时序仿真 B 功能仿真 C 行为仿真 D 逻辑仿真 5.下列描述EDA工程设计流程正确的是(C) A输入->综合->布线->下载->仿真 B布线->仿真->下载->输入->综合 C输入->综合->布线->仿真->下载 D输入->仿真->综合->布线->下载 6.下列编程语言中不属于硬件描述语言的是(D) A VHDL B V erilog C ABEL D PHP 1.8.3问答 1.结合本章学习的知识,简述什么是EDA技术?谈谈自己对EDA技术的认识? 答:EDA(Electronic Design Automation)工程是现代电子信息工程领域中一门发展迅速的新技术。 2.简要介绍EDA技术的发展历程? 答:现代EDA技术是20世纪90年代初从计算机辅助设计、辅助制造和辅助测试等工程概念发展而来的。它的成熟主要经历了计算机辅助设计(CAD,Computer Aided Design)、计算机辅助工程设计(CAED,Computer Aided Engineering Design)和电子设计自动化(EDA,Electronic System Design Automation)三个阶段。 3.什么是SOC?什么是SOPC? 答:SOC (System on Chip,片上系统) SOPC(System on a Programmable Chip,片上可编程系统) 4.对目标器件为CPLD/FPGA的VHDL设计,主要有几个步骤?每步的作用和结果分别是什

VHDL语言设计4选1多路选择器

4选1多路选择器的VHDL描述 要求:THEN语句和CASE语句实现4选1多路选择器,其中选择控制信号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。 一、解法1:用IF_THEN语句实现4选1多路选择器 (1)程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 IS PORT (a,b,c,d: IN STD_LOGIC; s0: IN STD_LOGIC; s1: IN STD_LOGIC; y: OUT STD_LOGIC); END ENTITY mux41; ARCHITECTURE if_mux41 OF mux41 IS SIGNAL s0s1 : STD_LOGIC_VECTOR(1 DOWNTO 0);--定义标准逻辑位矢量数据BEGIN s0s1<=s1&s0; --s1相并s0,即s1与s0并置操作 PROCESS(s0s1,a,b,c,d) BEGIN IF s0s1 = "00" THEN y <= a; ELSIF s0s1 = "01" THEN y <= b; ELSIF s0s1 = "10" THEN y <= c; ELSE y <= d; END IF; END PROCESS; END ARCHITECTURE if_mux41; (2)编译的结果如下:

编译报告: 二、解法2:用CASE语句实现4选1多路选择器(1)程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY mux41 IS PORT (a,b,c,d: IN STD_LOGIC;

第6章 VHDL程序设计

第六章:VHDL程序设计 §6.1 VHDL描述风格 ·描述风格:VHDL的构造体用于描述整个设计实体的逻辑功能。对于相同的电路功能行为,可以用不同的描述方式来表达;对于相同的逻辑行为,可以用不同的语句来描述。 ·类型:行为描述; 寄存器传递(数据流)描述; 结构描述。 1.行为描述方式 ·含义:是对系统数学模型的描述。 ·特点:①只表示输入与输出间转换的行为,而不包含任何结构信息; ②主要使用函数、过程和进程语句,以算法形式描述数据的变换和传送; ③比寄存器传递和结构描述具有更高的抽象性; ④行为描述是VHDL编程的核心,可以说,没有行为描述就没有VHDL。 ⑤通常不能直接进行逻辑综合,需要转化成RTL描述或结构描述。 ·用途:主要用于系统数学模型的仿真或系统工作原理的仿真。 [例6-1]用行为描述方式描述“二选一”电路功能。 LIBRARY IEEE; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY mux2 IS i1 PROT( i0, i1, sel : IN STD_LOGIC; q: OUT STD_LOGIC ); sel END mux2; ARCHITECTURE behav OF mux2 IS BEGIN CASE sel IS WHEN 0 =>q<=i0 AFTER 10ns; WHEN 1 =>q<=i1 AFTER 10ns; WHEN OTHERS=>q<=‘X‘ AFTER 10ns; END CASE END behav; 2.寄存器传递描述(RTL)方式 ·含义:是一种明确规定寄存器描述的方法。 ·分类:①采用寄存器之间的功能描述(类似行为描述);

用VHDL语言设计延时电路

用VHDL语言设计延时电路 用VHDL语言设计延时电路时一般用计数器或计数器的级联来实现。 下面以一个实例来说明如何实现任意时间量的延时。 在5 MHz时钟CLK控制下对同步信号SYNC进行N延时(SYNC脉冲宽度为2 μs,脉冲重复频率为1 kHz;0μs≤N≤998 μs)。要求每次在同步脉冲上升沿到来时开始延时,并在延时结束后产生宽度为10 μs的选通信号。 需要产生的延时时序如图2所示(延时量N=4.2μs)。 这里采用3个计数器和1个或门产生上述延时信号,如图3所示,模N计数器计延时量;模50计数器计选通信号的宽度;模N+50计数器用于产生使能信号。用VHDL硬件描述语言进行硬件电路设计时,同一个进程中不能用2个时钟来触发,而时序图中又要求在同步脉冲SYNC的上升沿开始延时,为了解决这一问题,采用了模N+50计数器和1个或门。 当同步脉冲为高电平时,模N计数器和模N+50计数器开始计数,并置dly_en为高电平。模N计数器满,置dly_enl为高电平同时产生选通信号。当模N+50计数器计满即选通信号产生完之后置dly_en为低电平。当下一个同步脉冲到来时重复以上过程。这种设计电路的好处是当同步脉冲的宽度改变时对时序控制并无影响,因为在计数过程中只用了SYNC的上升沿,从延时开始到选通信号结束,在或门的作用下SYNC对计数器不起控制作用。

上述电路的VHDL程序如下:

该程序选择N=20,即延时量是4.2 μs,由于要使用时钟来判断SYNC的上升沿情况,因此,如果令N=0,产生的delay信号仍然会有1个时钟的固有延时,在计算延时量时应充分考虑到这一点,延时量=(N+1)×时钟周期。

VHDL程序设计题

VHDL 程序设计题 四、 编程题(共50分) 1、请补全以下二选一VHDL 程序(本题10分) Entity mux is port(d0,d1,sel:in bit; q:out BIT ); (2) end mux; architecture connect of MUX is (4) signal tmp1, TMP2 ,tmp3:bit; (6) begin cale: block begin tmp1<=d0 and sel; tmp2<=d1 and (not sel) tmp3<= tmp1 and tmp2; q <= tmp3; (8) end block cale; end CONNECT ; (10) 2、编写一个2输入与门的VHDL 程序,请写出库、程序包、实体、构造体相关语句,将端口定义为标准逻辑型数据结构(本题10分) LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; (2) ENTITY nand2 IS PORT (a ,b:IN STD_LOGIC; (4) & a b y

y:OUT STD_LOGIC); (6) END nand2; ARCHITECTURE nand2_1 OF nand2 IS (8) BEGIN y <= a NAND b; --与y <=NOT( a AND b);等价(10)END nand2_1; 3、根据下表填写完成一个3-8线译码器的VHDL程序(16分)。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY decoder_3_to_8 IS PORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC; y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); (2)END decoder_3_to_8; ARCHITECTURE rtl OF decoder_3_to_8 IS SIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0); (4)BEGIN indata <= c & b & a; (6)PROCESS (indata,g1,g2a,g2b) BEGIN IF (g1 = '1' AND g2a = '0' AND g2b = '0' ) THEN (8)CASE indata IS WHEN "000"=> y <= ""; WHEN "001" => y <= ""; WHEN "010" => y <= ""; (10) WHEN "011" => y <= ""; WHEN "100" => y <= ""; WHEN "101" => y <= ""; WHEN "110" => y <= ""; (12) WHEN "111" => y <= ""; WHEN OTHERS=> y <= "XXXXXXXX"; END CASE; ELSE

数据选择器的VHDL设计

实验名称:数据选择器的VHDL设计 一、用WHEN_ELSE语句编写具有低电平使能端的4选1数据选择器 1.实体框图 2.程序设计 ①编译前的程序 Library ieee; Use ieee.std_logic_1164.all; Entity Mux41A is port(D0,D1,D2,D3,EN:in std_logic; A0,A1:in std_logic; Y:out std_logic); End Mux41A; Architecture one of Mux41A is signal B:std_logic Begin B<=EN & A1 & A0; Y<=D0 when B="000" else D1 when B="001" else D2 when B="010" else D3 when B="011" else 'Z'; End architecture one; ②程序编译错误情况 错误1: Error (10500): VHDL syntax error at Mux41A.vhd(10) near text "Begin"; expecting ";", or ":=", or "bus", or "register" ③正确的程序 Library ieee;

Use ieee.std_logic_1164.all; Entity Mux41A is port(D0,D1,D2,D3,EN:in std_logic; A0,A1:in std_logic; Y:out std_logic); End Mux41A; Architecture one of Mux41A is signal B:std_logic_vector(2 downto 0); Begin B<=EN & A1 & A0; Y<=D0 when B="000" else D1 when B="001" else D2 when B="010" else D3 when B="011" else 'Z'; End architecture one; 3.仿真波形图 4.仿真波形分析 EN为低电平有效的使能端,A1、A0为控制端,D0、D1、D2、D3为选通端,Y为输出端当EN=‘1’时,输出为高阻状态; 当EN=‘0’时,低电平有效 A1A0=“00”时,选择D0输出 A1A0=“01”时,选择D1输出 A1A0=“10”时,选择D2输出 A1A0=“11”时,选择D3输出

VHDL习题解答要点

VHDL 程序设计教程习题参考解答 第一章习题参考答案 1.什么是VHDL?VHDL的实现有哪几种形态? 硬件描述语言(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月通过标准审查,VHDL1.0版本宣布实施,即IEEE STD 1076-1987。 1993年经过重新修订,发布VHDL2.0版本,从而形成新的标准即IEEE STD 1076-1993。 2006年VHDL发布VHDL3.0版本; 2008年8月,VHDL 4.0版本发布,解决了3.0版本中发现的多个问题。 2009年1月,IEEE公布了VHDL 4.0的标准版本,最新VHDL标准IEEE 1076-2008在2009年1月实施。 3. 详述VHDL设计IP模块的流程。 第1种设计形态,VHDL程序以IP模块的形态存在,VHDL-IP设计流程如图1.6所示。IP模块是与集成电路工艺无关的芯片设计方案,可以移植到不同的设计环境。IP产品形态有规范,有IP包装规则和复用规则,是原生态的芯片硬件设计产品。 图1.6 VHDL-IP设计流程 4. 简答VHDL设计用FPGA实现的意义。 可编程器件FPGA具有容量大、密度高等特点,是科学实验、小批量生产、样机研制的载体。这种产品形态可以作为科学实验、小批量产品研发的最佳实现方案。 5. 叙述用VHDL设计ASIC的流程。 VHDL设计的ASIC芯片实现,流程如图1.8所示。工程项目的VHDL功能设计与某一集成电路工艺相结合,形成集成电路版图设计,并在晶圆上实现实现集成电路芯片的制造。

VHDL程序设计题

VHDL程序设计题 四、编程题(共50分) 1、请补全以下二选一VHDL程序(本题10分) Entity mux is port(d0,d1,sel:in bit; q:out BIT ); (2) end mux; architecture connect of MUX is (4) signal tmp1, TMP2 ,tmp3:bit; (6) begin cale: block begin tmp1<=d0 and sel; tmp2<=d1 and (not sel) tmp3<= tmp1 and tmp2; q <= tmp3; (8) end block cale; end CONNECT ; (10) 2、编写一个2输入与门的VHDL程序,请写出库、程序包、实体、构造体相关语句,将端口定义为标准逻辑型数据结构(本题10分) &y LIBRARY IEEE; USE (2) ENTITY nand2 IS PORT (a,b:IN STD_LOGIC; (4)

y:OUT STD_LOGIC); (6) END nand2; ARCHITECTURE nand2_1 OF nand2 IS (8) BEGIN y <= a NAND b; --与y <=NOT( a AND b);等价(10) END nand2_1; 3、根据下表填写完成一个3-8线译码器的VHDL程序(16分)。 LIBRARY IEEE; USE decoder_3_to_8 IS PORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC; y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); (2)END decoder_3_to_8; ARCHITECTURE rtl OF decoder_3_to_8 IS SIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0); (4)BEGIN indata <= c & b & a; (6) PROCESS (indata,g1,g2a,g2b) BEGIN IF (g1 = '1' AND g2a = '0' AND g2b = '0' ) THEN (8) CASE indata IS WHEN "000"=> y <= ""; WHEN "001" => y <= ""; WHEN "010" => y <= ""; (10) WHEN "011" => y <= ""; WHEN "100" => y <= ""; WHEN "101" => y <= ""; WHEN "110" => y <= ""; (12) WHEN "111" => y <= "01111111"; WHEN OTHERS=> y <= "XXXXXXXX"; END CASE; ELSE

vhdl程序设计教学大纲

《VHDL硬件描述语言》教学大纲 一、课程基本信息 课程名称:VHDL硬件描述语言 课程编码:31082008 课程类别:学科基础选修课程 适用专业:计算机科学与技术 开课学期:第3学年第1学期 课程学时:32 课程学分:2 先修课程:数字逻辑电路 并修课程:算法分析 课程简介:vhdl是计算机科学与技术专业选修的基础课程,主要讲述vhdl硬件描述语言的基础知识,以及用vhdl硬件描述语言设计的基本理论和方法。 数字逻辑电路课程包括vhdl程序结构和描述、vhdl 顺序语句,并行语句,数字逻辑单元的设计等内容。 二、课程教育目标 通过vhdl 语言课程的学习,使学生掌握vhdl硬件描述语言的基本原理和设计方法,运用vhdl语言设计基本的数字电路设计,为以后学习计算机组成原理、计算机配置与维护等后续课程以及从事数字电子技术领域的工作打下扎实的基础。 三、课程教学内容、要求及学时安排 第一章 EDA技术概述和 vhdl语言 【教学内容】 1. EDA技术概述 2. vhdl 语言概述 【教学要求】 1.了解EDA技术和vhdl语言。 【教学方法】理论联系实际,课堂讲授,课后作业等。 【学时】1 第二章 vhdl语言基础 【教学内容】 1. vhdl程序结构

2. vhdl 语言描述 3. vhdl语言的数据类型 4. vhdl 语言的顺序描述语句 5. vhdl 语言的并发描述语句 【教学要求】 1.掌握vhdl语言的顺序描述语句,并发描述语句。 2.熟悉vhdl语言的结构。 3.了解vhdl语言的数据类型。 【教学方法】理论联系实际,课堂讲授,课后作业等。 【学时】9 第三章数字逻辑单元设计 【教学内容】 1.组合逻辑电路设计 2.数据运算单元设计 3. 时序逻辑电路设计 【教学要求】 1.掌握组合逻辑电路设计和时序逻辑电路设计。 2.熟悉数据运算单元设计。 3.了解总线缓冲单元设计。 【教学方法】理论联系实际,课堂讲授,课后作业等。 【学时】10 四、考核及成绩评定 (一)命题原则与思想 综合考核所学知识、各章节的知识点、要求掌握的基本知识和基本原理,试题难易适中,学习成绩具有一定的区分度。 (二)考试范围 第一章至第三章 (三)考核要求 掌握重点内容,以及各章的知识点 (四)考核类型 考试 (五)试题类型 选择题、设计题、综合题

VHDL程序设计题

VHDL 程序设计题 四、编程题(共50 分) 2、编写一个2输入与门的VHDL 程序,请写出库、程序包、实体、构造体相关语句,将端 口定义为标准逻辑型数据结构(本题 10分) LIBRARY IEEE; USE (2) ENTITY nand2 IS PORT (a b:IN STD_LOGIC; ( 4) 1、请补全以下二选一 En tity mux is p ort(d0,d1,sel:in bit; q:out BIT ); end mux; architecture conn ect of sig nal tmp1, TMP2 begin cale: block begin tmp 1<=d0 and sel; tmp 2<=d1 and (not sel) tmp 3<= tmp1 and tmp2; q <= tmp3: end block cale; end CONNECT VHDL 程序(本题10分) MUX __________________ is ______ ,tmp 3:bit; (8) (10)

(10) <="": (14) END nan d2: ARCHITECTURE nand2 1 OF nand2 IS BEGIN y <= a NAND b :--与 y <=NOT( a AND b)等价 END nan d2_1: 3、根据下表填写完成一个 3-8线译码器的VHDL 程序(16分)。 LIBRARY IEEE : USE decoder_3_to_8 IS P ORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC : y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)): END decoder_3_to_8: ARCHITECTURE rtl OF decoder_3_to_8 IS SIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0): BEGIN in data <= c & b & a: P ROCESS (in data,g1,g2a,g2b) BEGIN IF (g1 = '1' AND g2a = '0' AND g2b = '0') THEN CASE in data IS WHEN "000"=> y <="": WHEN "001" => y <="": WHEN "010" => y <="": (10) WHEN "011" => y <="": WHEN "100" => y <="": WHEN "101" => y <="": WHEN "110" => y <="": (12) WHEN "111" => y <= "01111111": WHEN OTHERS=> y <= "XXXXXXXX": END CASE : ELSE y y:OUT STD_LOGIC); (6) (8)

EDA用VHDL语言设计一个2-4译码器

2-4译码器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY decoder 2 _4 IS PORT( a:IN STD_LOGIC_VECTOR(1 DOWNTO 0); s:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END decoder2_4; ARCHITECTURE Behavioral OF decoder2 _4_t IS BEGIN PROCESS(sel) BEGIN CASE a IS WHEN "00"=>s<=”0001”; WHEN "01"=>s<=”0010”; WHEN "10"=>s<=”0100”; WHEN "11"=>s<=”1000 “; WHEN OTHERS=>s<=’’0000” END CASE; END PROCESS; END Brhavioral; 4选1数据选择器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY sel4 IS PROT(d:IN STD_LOGIC_VECTOR(3DOWNTO 0); a:IN STD_LOGIC_VECTOR(1 DOWNTO 0); s:OUT STD_LOGIC); END sel4: ARCHITECTURE Behavioral OF sel4 IS BEGIN ROCESS(a,d) BEGIN CASE a IS WHEN "00"=>s<=d(0) WHEN "01"=>s<=d(1) WHEN "10"=>s<=d(2) WHEN "11"=>s<=d(3) “; WHEN OTHERS=>s<=’Z’

VHDL程序设计

VLSI电路设计课设 VHDL语言基础 胡小玲

主要内容 z硬件描述语言简介z VHDL基本结构 z VHDL数据和表达式z VHDL描述语句 z系统仿真 z综合

硬件描述语言HDL z Hardware Description Language 广义地说,描述电子实体的语言:逻辑图,电路图。硬件描述语言能在高层设计阶段描述硬件。 z起源:大规模电路的出现,使得逻辑图、布尔方程不太适用,需要在更高层次上描述系统; 出现多种HDL语言,为便于信息交换和维护,出现工业标准。 ?分类:VHDL、Verilog HDL等。

硬件描述语言HDL z HDL语言的特点 –用HDL语言设计电路能够获得非常抽象的描述 –用HDL描述电路设计,在设计的前期就可以完成 电路功能级的验证 –用HDL设计电路类似于计算机编程。带有注解的 文字描述更有利于电路的开发与调试 z能提供HDL模拟器的公司:Cadence、Altera、Mentor Graphics、Synopsys等大型EDA公司和专门公司

学习HDL的几点重要提示 了解HDL的可综合性问题 HDL有两种用途:系统仿真和硬件实现。如果程序只用于仿真,那么几乎所有的语 法和编程方法都可以使用。但如果我们的程序是用于硬件实现(例如:用于FPGA 设计),那么我们就必须保证程序“可综合”(程序的功能可以用硬件电路实现)。 不可综合的HDL语句在软件综合时将被忽略或者报错。我们应当牢记一点:“所有的 HDL描述都可以用于仿真,但不是所有的HDL描述都能用硬件实现。” 用硬件电路设计思想来编写HDL 学好HDL的关键是充分理解HDL语句和硬件电路的关系。编写HDL,就是在描述一个电路,我们写完一段程序以后,应当对生成的电路有一些大体上的了解,而不能用纯软件的设计思路来编写硬件描述语言。要做到这一点,需要我们多实践,多思考,多总结。 语法掌握贵在精,不在多 30%的基本HDL语句就可以完成95%以上的电路设计,很多生僻的语句并不能被所有的综合软件所支持,在程序移植或者更换软件平台时,容易产生兼容性问题,也不利于其他人阅读和修改。建议多用心钻研常用语句,理解这些语句的硬件含义,这比多掌握几个新语法要有用的多。

VHDL程序设计题

VHDL程序设计题 四、编程题(共50 分) 1、请补全以下二选一VHDL 程序(本题10 分) Entity mux is port(d0,d1,sel:in bit; q:out BIT ); (2) end mux; architecture connect of MUX is (4) signal tmp1, TMP2 ,tmp3:bit; (6) begin cale: block begin tmp1<=d0 and sel; tmp2<=d1 and (not sel) tmp3<= tmp1 and tmp2; q <= tmp3; (8) end block cale; end CONNECT ; (10) 2、编写一个 2 输入与门的VHDL 程序,请写出库、程序包、实体、构造体相关语句,将端口定义为标准逻辑型数据结构(本题10 分) a & y b LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; (2) ENTITY nand2 IS PORT (a,b:IN STD_LOGIC; (4)

y:OUT STD_LOGIC); (6) END nand2; ARCHITECTURE nand2_1 OF nand2 IS (8) BEGIN y <= a NAND b; -- 与y <=NOT( a A ND b); 等价(10) END nand2_1; 3、根据下表填写完成一个3-8 线译码器的VHDL 程序(16 分)。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY decoder_3_to_8 IS PORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC; y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); (2)END decoder_3_to_8; ARCHITECTURE rtl OF decoder_3_to_8 IS SIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0); (4)BEGIN indata <= c & b & a; (6)PROCESS (indata,g1,g2a,g2b) BEGIN IF (g1 = '1' AND g2a = '0' AND g2b = '0' ) THEN (8)CASE indata IS WHEN "000"=> y <= "11111110"; WHEN "001" => y <= "11111101"; WHEN "010" => y <= "11111011"; (10) WHEN "011" => y <= "11110111"; WHEN "100" => y <= "11101111"; WHEN "101" => y <= "11011111"; WHEN "110" => y <= "10111111"; (12) WHEN "111" => y <= "01111111"; WHEN OTHERS=> y <= "XXXXXXXX"; END CASE; ELSE

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 IS PORT (clk,clr,en:IN STD_LOGIC; Qa,qb,qc,qd:OUT STD_LOGIC); END countA; ARCHITECTURE example OF countA IS SIGNAL count_4:STD_LOGIC_vector (3 DOWNTO 0); BEGIN Qa <= count_4(0); Qb <= count_4(1); Qc <= count_4(2); Qd <= count_4(3);

相关文档