文档库 最新最全的文档下载
当前位置:文档库 › VHDL程序题库

VHDL程序题库

VHDL程序题库
VHDL程序题库

3 位比较器

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_unsigned.all;

use ieee.std_logic_arith.all;

entity comp3 is

port (

a: in STD_LOGIC_VECTOR(2 downto 0);

b: in STD_LOGIC_VECTOR(2 downto 0);

c: out STD_LOGIC

);

end comp3;

architecture comp3_arch of comp3 is

begin

process(a,b)

begin

if ( a >= b ) then

c <= …1?;

else

c <= …0?;

end if;

end process;

end;

4 选1 选择器

entity mux4 is

port (

a: in STD_LOGIC_VECTOR(3 downto 0);

sel: in STD_LOGIC_VECTOR(1 downto 0);

c: out STD_LOGIC

);

end mux4;

architecture mux4_arch of mux4 is

begin

process(sel)

begin

case sel is

when “00” => c <= a(0);

when “01” => c <= a(1);

when “10” => c <= a(2);

when “11” => c <= a(3);

end case;

end process;

end;

2 位加法器entity adder2 is

port (

a: in STD_LOGIC_VECTOR(1 downto 0);

b: in STD_LOGIC_VECTOR(1 downto 0);

c: out STD_LOGIC_VECTOR(1 downto 0) );

end adder2;

architecture adder2_arch of adder2 is

begin

c <= a + b;

end;

3-8 译码器

entity dec3_8 is

port (

a: in STD_LOGIC_VECTOR (2 downto 0);

b: out STD_LOGIC_VECTOR (7 downto 0) );

end dec38;

architecture dec3_8_arch of dec3_8 is

begin

process (a)

begin

CASE a is

WHEN "000" => b <= "11111110";

WHEN "001" WHEN "010" WHEN "011" WHEN "100" WHEN "101" WHEN "110" WHEN "111" =>

=>

=>

=>

=>

=>

=>

b

b

b

b

b

b

b

<=

<=

<=

<=

<=

<=

<=

"11111101";

"11111011";

"11110111";

"11101111";

"11011111";

"10111111";

"01111111";

end CASE;

end process;

end;

7 段数码管译码器(一)

entity seg7_1 is

port (

a: in STD_LOGIC_VECTOR (3 downto 0);

b: out STD_LOGIC_VECTOR (6 downto 0) );

end seg7_1;

architecture seg7_1_arch of seg7_1 is

begin

process (a)

begin

CASE a is

WHEN "0000" WHEN "0001" WHEN "0010" WHEN "0011" WHEN "0100" WHEN "0101" =>

=>

=>

=>

=>

=>

b

b

b

b

b

b

<=

<=

<=

<=

<=

<=

"1111110";

"0110000";

"1101101";

"1111001";

"0110011";

"1011011";

--0

--1

--2

--3

--4

--5

4

end CASE;

end process;

end;

7 段数码管译码器(二)

entity seg7_2 is

port (

a: in STD_LOGIC_VECTOR (3 downto 0);

b: out STD_LOGIC_VECTOR (6 downto 0) );

end seg7_2;

architecture seg7_2_arch of seg7_2 is

begin

process (a)

begin

CASE a is

WHEN "0000" WHEN "0001" WHEN "0010" WHEN "0011" WHEN "0100" WHEN "0101" WHEN "0110" WHEN "0111" =>

=>

=>

=>

=>

=>

=>

=>

b

b

b

b

b

b

b

b

<=

<=

<=

<=

<=

<=

<=

<=

"1111110";

"0110000";

"1101101";

"1111001";

"0110011";

"1011011";

"1011111";

"1110000";

--0

--1

--2

--3

--4

--5

--6

--7

WHEN "1101" WHEN "1110" WHEN "1111" WHEN OTHERS =>

=>

=>

=>

b

b

b

b

<=

<=

<=

<=

"0111101";

"1001111";

"1000111";

"0000000";

--d

--e

--f

--X

end CASE;

end process;

end;

10 进制计数器

entity cnt16 is

port (

clk: in STD_LOGIC;

cnt: out STD_LOGIC_VECTOR (3 downto 0);

);

end cnt10;

architecture cnt10_arch of cnt10 is signal count: integer range 0 to 10 begin

process(clk,reset)

begin

if (clk'event and clk='1') then

if (count = 10) then

count <= 0;

else

count <= count + 1;

end if;

end if;

end process;

cnt <= conv_std_logic_vector(count,4); end;

10 分频器

entity div10 is

port (

clk: in STD_LOGIC;

clkout: out STD_LOGIC;

);

end div10;

architecture div10_arch of div10 is signal t: STD_LOGIC;

begin

process(clk,reset)

variable count: integer range 0 to 10 begin

if (clk'event and clk='1') then

if (count = 4) then

count := 0;

t <= not t;

else

count := count + 1;

end if;

end if;

end process;

clkout <= t;

end;

4 位加减计数器

entity cnt16 is

port (

clk: in STD_LOGIC;

cnt: out STD_LOGIC_VECTOR (3 downto 0);

dir: in STD_LOGIC;

reset: in STD_LOGIC

);

end cnt16;

architecture cnt16_arch of cnt16 is

signal count: STD_LOGIC_VECTOR (3 downto 0); begin

process(clk,reset)

begin

if (reset = '1') then

count <= "0000";

elsif (clk'event and clk='1') then

if (dir='1') then

count <= count + 1;

else

count <= count - 1;

end if;

end if;

end process;

cnt <= count;

end;

8 位并入串出转换器

entity piso8 is

port (

clk: in STD_LOGIC;

sl: in STD_LOGIC; --0 load, 1 shift

pi: in STD_LOGIC_VECTOR(7 downto 0);

so: out STD_LOGIC

);

end piso8;

architecture piso8_arch of piso8 is

signal r : STD_LOGIC_VECTOR (7 downto 0); signal t :integer range 0 to 7;

begin

process(clk, sl)

begin

if (sl = '0') then

r <= pi;

t <= 7;

so <= '0';

elsif (clk'event and clk='1') then

so <= r(t);

t<= t-1;

end if;

end process;

end;

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

相关文档