VHDL程序设计题

合集下载

VHDL试卷6套

VHDL试卷6套

番茄花园一、 填空题( 分 每空格 分)、一个完整的 语言程序通常包含 实体( ) , 构造体( ), 配置( ), 包集合( )和 库( ) 各部分。

、在一个实体的端口方向说明时,输入使用 表示,那么构造体内部不能再使用的输出是用 表示;双向端口是用 表示;构造体内部可再次使用的输出是用 表示;、一个构造体可以使用几个子结构,即相对比较独立的几个模块来构成。

语言可以有以下 种形式的子结构描述语句: 语句结构; 语句结构和 结构。

、 的客体,或称数据对象包括了常数、 变量 和 信号 。

、请列出三个 语言的数据类型,如实数、位等。

位矢量 , 字符 , 布尔量 。

、设 为 为 为 为 的运算结果是“ , 的运算结果是“ 。

、构造体的描述方式包括三种,分别是 寄存器传输( )描述方法或称数据流 ; 构造体的结构描述方式 和 构造体的行为描述方式 。

、传统的系统硬件设计方法是采用自上而下( )的设计方法,利用硬件描述语言( )的硬件电路设计方法采用自下而上( )的设计方法。

(× )传统的系统硬件设计方法是采用自下而上( )的设计方法,利用硬件描述语言番茄花园( )的硬件电路设计方法采用自上而下( )的设计方法、 可以采用层次化的设计,一个高层的结构体中可以调用低层的实体 (√ )、一个 程序中仅能使用一个进程( )语句。

( × ) 可以使用多个进程语句。

、 语言的预算操作包括了逻辑运算符、关系运算符、乘法运算符等,它们三者的优先级是相同的。

( × ) 逻辑运算符 关系运算符 乘法运算、试举出两种可编程逻辑器件 、 。

、 程序的基本结构包括 库 、 程序包 、 实体和 结构体 。

、 标识符合法吗? 不合法 。

标识符合法吗? 不合法 。

标识符合法吗? 不合法 。

、信号的代入通常用 ,变量用 。

、表示‘ ’‘ ’;两值逻辑的数据类型是 (位) ,表示‘ ’‘ ’‘ 等九值逻辑的数据类型是 (标准逻辑),表示空操作的数据类型是 。

VHDL数字钟

VHDL数字钟

课程设计报告设计题目:用VHDL语言实现数字钟的设计班级:学号:姓名:指导老师:设计时间:摘要本设计是基于VHDL语言的数字钟,硬件平台是Xilinx的Virtex2系列FPGA 开发板。

该数字钟具备预置年月日时分秒的功能,通过按键还可以改变数字钟显示的内容和进入不同的设置状态,并通过加减按键调整系统时间。

在整个VHDl数字电路系统中,采用层次化设计方法,自顶向下进行设计。

设计中根据系统的功能要求合理划分出层次,进行分级设计和仿真验证,将较为复杂的数字系统逻辑简化为基本的模型从而降低实现的难度。

工程中底层实体实现了年月日、时分秒的双向计数器功能,另外还单独设计了系统的时钟模块,用来生成周期为125Hz的按键扫描时钟和周期为1Hz单位脉冲时钟。

为了消除按键的抖动,为此设计了按键消抖模块,采用了状态机来对按键进行消抖。

为了实现根据年份和月份对当前月的天数的判断逻辑,采用了函数对该逻辑进行分析,给出正确的判断结果。

为了提高利用率,在工程中建立了一个包集文件,对底层实体进行了统一封装,方便顶层的调用。

底层的所有实体系统的顶层主要完成了底层的元件例化,主控状态机对系统的状态转换进行控制,按键响应和时钟重新分配电路则完成了整个系统的控制逻辑。

关键词:层次化设计,元件例化,函数,状态机目录摘要 (2)一、课程设计目的 (4)二、课程设计内容及其要求 (4)三、VHDL程序设计 (5)1.设计方案论证 (5)2.设计思路与方法 (6)3.VHDL源代码及其仿真结果 (7)1、六进制可逆计数器 (7)2、十进制可逆计数器, (9)3、十二进制可逆计数器, (11)4、二十四进制可逆计数器 (13)5、天数计数器 (16)6、判断闰年和月份 (18)7、时钟分频模块 (22)8、按键消抖模块 (24)9、程序包 (27)10、顶层实体(主控状态机) (29)四、编程下载 (38)五、课程设计总结 (38)六、参考文献 (38)一、课程设计目的诞生于1983年的VHDL语言,在1987年被美国国防部和IEEE指定为标准硬件描述语言。

VHDL参考试题

VHDL参考试题

一、选择题(共10分,每题2分)1.在一个VHDL设计中Idata是一个信号,数据类型为std_logic_vector,试指出下面赋值语句错误的是__ ___。

A. idata <= “00001111”;B. idata <= b”0000_1111”;C. idata <= X”AB”;D. idata <= B”21”;2.在VHDL语言中,下列对时钟边沿检测描述中,错误的是__ ___。

A. if clk’event and clk = ‘1’ thenB. if falling_edge(clk) thenC. if clk’event and clk = ‘0’ thenD. if clk’stable and not clk = ‘1’ then3.请指出Altera Cyclone系列中的EP1C6Q240C8这个器件是属于_____A. ROMB. CPLDC. FPGAD.GAL4.状态机编码方式中,其中一位热码编码占用触发器较多,但其实现比较适合_____的应用。

A. FPGAB. CPLDC. PALD.GAL5.进程中的信号赋值语句,其信号更新是_______。

a)按顺序完成;b)比变量更快完成;c)在进程的最后完成;d)都不对。

二、EDA名词解释(共10分,每题2分)1.ASIC2.FPGA3.VHDL4.EDA5.SOC三、程序补充题(共10分,每空1分)下面程序是一个10线-4线优先编码器的VHDL描述,试补充完整。

LIBRARY __________ ;USE IEEE._____________________.ALL;ENTITY coder ISPORT ( din : IN STD_LOGIC_VECTOR(____________________);output : __________ STD_LOGIC_VECTOR(3 DOWNTO 0) );END coder;ARCHITECTURE behav OF _____________ ISSIGNAL SIN : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS (___________)BEGINIF (din(9)='0') THEN SIN <= "1001" ;__________________ THEN SIN <= "1000" ;ELSIF (din(7)='0') THEN SIN <= "0111" ;ELSIF (din(6)='0') THEN SIN <= "0110" ;ELSIF (din(5)='0') THEN SIN <= "0101" ;ELSIF (din(4)='0') THEN SIN <= "0100" ;ELSIF (din(3)='0') THEN SIN <= "0011" ;ELSIF (din(2)='0') THEN SIN <= "0010" ;ELSIF (din(1)='0') THEN SIN <= "0001" ;ELSE _______________ ;________________END PROCESS ;_______________;END behav;四、程序改错题(共15分)仔细阅读下列程序,改正程序中的错误并说明该程序的功能。

第6章(486)

第6章(486)

第6章 VHDL程序设计实验 图6.3 工程属性参数
第6章 VHDL程序设计实验
2.逻辑门的RTL描述 编写MY_AND2实体的VHDL代码。 (1) 选择菜单栏中的 Project→New Source。 (2) 在 Select Source Type 窗口中,选择左侧VHDL Module,在右侧 File Name栏中填入文件名MY_AND2,单 击Next按钮后弹出Define Module窗口,如图6.4所示。
entity MY_AND2 is port ( A: in STD_LOGIC; B: in STD_LOGIC; C: out STD_LOGIC);
end MY_AND2;
architecture BEHAVIORAL of MY_AND2 is begin
C <= A and B; end BEHAVIORAL;
(2) 将AND_OR.VHD的输入定义为一个总线,即STD_ LOGIC_VECTOR类型。
(3) 在AND_OR模块中,必须声明和例化被调用的下层 模块MY_AND2和MY_OR2。
(4) 在AND_OR模块中,必须显式地定义用于下层模块 互联的连线信号。
(5) MY_OR2和AND_OR模块的代码可以参照本实验后 面给出的代码实例。
本实验中会用到3个文件,文件对应的代码分别下:
MY_AND2.VH D
library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_ARITH. all; use IEEE.STD_LOGIC_UNSIGNED. all;
第6章 VHDL程序设计实验
end MY_AND2;
第6章 VHDL程序设计实验

VHDL语言实例

VHDL语言实例

VHDL 语言实例例1:设计一七段显示译码器,用它来驱动七段发光管 到9和字母A 到F 。

LED 显示数码管为共阳极。

LIBRARY ieee;USE ieee.std_logic_1164.all; ENTITY HEX2LED ISP ORT(LED : OUT std_logic_vector(6 TO图例1七段显示译码器实体ARCHITECTURE HEX2LED_arc OF HEX2LED IS BEGIN--HEX-TO-SEVEN-SEGMENT DECODER --SEGMENT ENCODING--5 | |1-- — — — — --4 | |20);HEX2LEDHEX :IN std_logic_vector(3 DOWNTO HEXES. . 0]"0) );LED 显示十六进制数字0ENDHEX2LED;WITH HEX SELECTLED<= "1111001" when "0001","0100100" when "0010","0110000" when "0011","0011001" when "0100","0010010" when "0101","0000010" when "0110","1111000" when "0111","0000000" when "1000","0010000" when "1001","0001000" when "1010","0000011" when "1011","1000110" when "1100","0100001" when "1101","0000110" when "1110","0001110" when "1111","1000000" when others;END HEX2LED_arc;例 2 :设计一个八选一数据选择器1)s 是通道选择信号,d0,d1,d2,d3,d4,d5,d6,d7 数据输入out1 是数据输出ENTITY sels ISP ORT(d0,d1,d2,d3,d4,d5,d6,d7:IN BIT;s :INTEGERRANGE0 TO 7;END sels;ARCHITECTURE sels_arc OF sels IS BEGINWITH s SELECTout1 <= d0 WHEN 0, d1 WHEN 1, d2 WHEN 2, d3 WHEN 3,d4 WHEN 4,d5 WHEN 5, d6 WHEN 6, d7 WHEN 7;END sels_arc;LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY mux8 ISPORT(IO,I1,I2,I3,I4,I5,I6,I7,A,B,C:IN std_logic; END mux8;sels图例2 (a)八选一数据选择器实体图例2 (b)八选一数据选择器实体out1 :OUT BIT);2)A,B,C 是通道选择信号,据输出10,11,12,13,14,15,16,17数据输入 Q 是数Q :OUT std_logic);ARCHITECTURE mux8_arc OF mux8 ISSIGNAL sel :INTEGER ;BEGINQ <= 10 AFTER 10 ns WHEN sel= 0 ELSE11 AFTER 10 ns WHEN sel= 1 ELSE 12 AFTER 10 ns WHEN sel= 2 ELSE 13 AFTER 10 ns WHEN sel= 3 ELSE 14 AFTER 10 ns WHEN sel= 4 ELSE 15 AFTER 10 ns WHEN sel= 5 ELSE 16 AFTER 10 ns WHEN sel= 6 ELSE 17 AFTER 10 ns ;sel <= 0 WHEN A=‘ 0' AND B= ‘ 0' AND C= ‘ 0' ELSE1 WHEN A= '1' AND B= ‘ 0'AND C='0' ELSE2 WHEN A='0' AND B=‘1' AND C= '0' ELSE3 WHEN A='1' AND B=‘1' AND C='0' ELSE4 WHEN A='0' AND B=‘ 0'AND C= '1' ELSE5 WHEN A='1' AND B=‘ 0'AND C= '1' ELSE6 WHEN A='0' AND B=‘ 0'AND C= '1' ELSE7;END mux8_arc;例3:设计一 D 触发器 d 是输入端,clk 是时钟信号控制端,q 是触发器的输出端。

1用VHDL设计的一位二进制全加器的示例程序

1用VHDL设计的一位二进制全加器的示例程序

1用VHDL设计的一位二进制全加器的示例程序VHDL(Very High-Speed Integrated Circuit Hardware Description Language)是一种硬件编程语言,它使用结构化的方法来描述数字系统中的电路。

在设计一位二进制全加器之前,我们需要了解一下什么是二进制全加器。

二进制全加器是一种逻辑电路,用于将两个二进制位以及一个进位输入相加,并生成一个和输出以及一个进位输出。

以下是一个使用VHDL编写的一位二进制全加器的示例程序:```vhdl-- Entity声明entity full_adder isportA, B, Cin : in std_logic; -- 输入端口,分别对应两个二进制位和进位Sum, Cout : out std_logic -- 输出端口,分别对应和和进位end full_adder;-- Architecture实现architecture behavior of full_adder isbeginprocess(A, B, Cin)variable temp_sum : std_logic;begintemp_sum := (A xor B) xor Cin; -- 计算和值Sum <= temp_sum; -- 输出和值Cout <= (A and B) or (Cin and (A xor B)); -- 计算进位end process;end behavior;```该程序定义了一个名为`full_adder`的实体,它有3个输入端口(A,B和Cin)和2个输出端口(Sum和Cout)。

`std_logic`是VHDL中的一种数据类型,用于表示逻辑电平。

在架构部分,程序使用一个过程来计算和值(temp_sum)和进位(Cout)。

和值的计算通过使用异或(`xor`)操作符来实现,进位的计算则使用与(`and`)和或(`or`)逻辑操作符的组合来实现。

VHDL复习题

VHDL复习题
A.idata <= “00001111”; B.idata <= b”0000_1111”;
C.idata <= X”AB” D. idata <= B”21”;
18. VHDL中,为目标变量赋值符号是 。
A. =: B. = C. <= D. :=
19. 如果a=1,b=1,则逻辑表达式(a XOR b) OR( NOT b AND a)的值是 。
A. 0 B. 1 C. 2 D. 不确定
20. 下面对利用原理图输入设计方法进行数字电路系统设计的描述中,那一种说法是不正确的。 。
A. 数据类型不同不能进行运算 B. 数据类型相同才能进行运算
C. 数据类型相同或相符就可以运算 D. 运算与数据类型无关
11. vhdl语言是一种结构化的设计语言,一个设计实体包括实体和结构体两部分,结构体描述的是 。
A.器件外部特性 B. 器件的内部功能
B. 在系统编程
C. 没有特定意义
D. 使用编程器烧写PLD芯片
15. 执行下列语句后Q的值等于 。
……
SIGNAL E: STD_LOGIC_VECTOR (2 TO 5);
SIGNAL Q: STD_LOGIC_VECTOR (9 DOWNTO 2);
15. VHDL的实体声明部分指定了设计单元的 或 它是设计实体对外的一个通信界面,是外界可以看到的部分。
16. 在VHDL中最常用的库是 标准库,最常用的数据包是 数据包。
17. 过程调用的两种方法为 和 。
……
E<=(2=>’1’, 4=>’0’, OTHERS=>’1’);
Q<=(2=>E (2), 4=>E (3), 5=>’1’, 7=>E (5), OTHERS=>E (4));

VHDL试卷

VHDL试卷

一.简答题(每题4分,共32分)1.VHDL的英文全称是什么?其中文含义又是什么?2.常用的硬件描述语言有哪几种?3.比前比较流行的、主流厂家的EDA软件工具有哪些?4.怎样使VHDL程序变成实用电路?5.在VHDL设计中,哪些程序包必须以显式表达出来,哪些库和程序包则不用?6.重载算符有何作用?7.在VHDL中,常量(CONSTANT)与信号(SIGNAL)主要区别是什么?8.并行信号赋值语句相当于一条缩写的进程(PROCESS)语句,问它的敏感信号检测是如何实现的?二.判断下列标识符或数值在VHDL中是否合法,如果有错误,请指出原因(每小题1分,共8分)1. variable2. 4data_bus 3 \begin\ 4. data_25. \d100@\6. \74\04\7. 8#357#8. 16#19H#三.根据如下的VHDL描述,画出其相应的逻辑电路图,并标出相关名称(每题5分,共10分)1. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY test_1 ISPORT(p1,p2:IN BIT;a,b,c: IN BIT;z:OUT BIT);END ENTITY test_1;ARCHITECTURE one OF test_1 ISBEGINIF(p1=’1’) THENz<=a;ELSE()p2=’0’) THENz<=b;ELSEz<=c;END IF;END one;2. LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY test_2 ISGENERIC(tpd TIME:=10 ns);PORT(x,y,c_in: IN STD_LOGIC;sum,c_out: OUT STD_LOGIC);END test_2;ARCHITECTURE dataflow OF test_2 ISSIGNAL s: STD_LOGIC;BEGIN s<=x XOR y AFTER tpd;sum<= s XOR c_in AFTER tpd;c_out<=(x AND y) OR (s AND c_in) AFTER 2*tpd;END dataflow;四、给下列每一行VHDL描述都进行注释(答题时不必抄题,标注各行语句的编号后进行相应的解释即可。

VHDL复习题

VHDL复习题

习题3.1比较常用硬件描述语言VHDL、Verilog和ABEL语言的优劣。

1.VHDL:描述语言层次较高,不易控制底层电路,因而对综合器的性能要求较高。

有多种EDA工具选择,已成为IEEE标准。

应用VHDL进行工程设计的优点是多方面的,具体如下:(1) 与其他的硬件描述语言相比,VHDL具有更强的行为描述能力。

(2) VHDL具有丰富的仿真语句和库函数,使得在任何大系统的设计早期,就能查验设计系统的功能可行性,随时可对系统进行仿真模拟,使设计者对整个工程的结构和功能可行性做出判断。

(3) VHDL语句的行为描述能力和程序结构,决定了它具有支持大规模设计的分解和已有设计的再利用功能。

(4) 用VHDL完成一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动把VHDL描述设计转变成门级网表(根据不同的实现芯片)。

(5) VHDL对设计的描述具有相对独立性。

(6) VHDL具有类属描述语句和子程序调用等功能,对于完成的设计,在不改变源程序的条件下,只需改变类属参量或函数,就能轻易地改变设计的规模和结构。

2. Verilog:设计者需要了解电路的结构细节,对综合器的性能要求较低。

有多种EDA工具选择,已成为IEEE标准。

3.ABEL: 设计者需要了解电路的结构细节,对综合器的性能要求较低。

支持ABEL的综合器只有一家,ABEL正朝国际化标准努力。

3.2 VHDL程序一般包括几个组成部分?每部分的作用是什么?(1)三个基本组成部分:库、程序包使用说明,实体描述和实体对应的结构体描述。

(2)库、程序包使用说明:用于打开调用本设计实体将用到的库、程序包实体描述:用于描述该设计实体与外界的接口信号说明结构体描述:用于描述该设计实体内部的组成及内部工作的逻辑关系结构体配置语句主要用于层次化的方式对特定的设计实体进行元件的例化,或是为实体选定某个特定的结构体3.3 VHDL语言中数据对象有几种?各种数据对象的作用范围如何?各种数据对象的实际物理含义是什么?(1)数据对象有三种:变量、常量、信号(2)常量的作用范围取决于其所定义的位置。

VHDL 简答和编程题

VHDL 简答和编程题

1、与HDL文本输入法相比较,原理图输入法有何优点?①设计者不需增加新的相关知识,如HDL等。

②输入方法与用protel作图相似,设计过程形象直观,适合初学者入门。

③对于较小的电路模型,其结构与实际电路十分接近,设计者易于把握电路全局(适合设计小型数字电路)。

④设计方式接近于底层电路布局,因此易于控制逻辑资源的耗用,节省面积。

2、写出结构体的一般语言格式并说明其作用ARCHITECTURE 结构体名OF 实体名IS[说明语句]BEGIN[功能描述语句]END ARCHITECTURE 结构体名;结构体用于描述电路器件的内部逻辑功能或电路结构。

使用的语句有顺序语句和并行语句。

3、信号和变量的区别?①信号赋值至少有δ延时,而变量赋值没有延时。

②信号除当前值外有许多相关的信息,而变量只有当前值。

③进程对信号敏感而对变量不敏感④信号可以是多个进程的全局信号;而变量只在定义它们的顺序域可见。

⑤信号是硬件中连线的抽象描述,它们的功能是保存变化的数据和连接子元件,信号在元件的端口连接元件。

变量在硬件中没有类似的对应关系,它们用于硬件特性的高层次建模所需要的计算中。

⑥信号赋值和变量赋值分别使用不同的赋值符号“<=”和“:=”,信号类型和变量类型可以完全一致,也允许两者之间相互赋值,但要保证两者的类型相同。

4、写出PROCESS语句结构的一般表达格式。

[进程标号: ] PROCESS [ ( 敏感信号参数表) ] [IS][进程说明部分]BEGIN顺序描述语句END PROCESS [进程标号];5、写出五种以上的VHDL的预定义数据类型。

布尔(BOOLEAN)数据类型、位(BIT)数据类型、位矢量(BIT_VECTOR)数据类型字符(CHARACTER)数据类型、整数(INTEGER)数据类型、实数(REAL)数据类型字符串(STRING)数据类型、时间(TIME)数据类型6、WHEN_ELSE条件信号赋值语句和IF_ELSE顺序语句的异同:* WHEN_ELSE条件信号赋值语句中无标点,只有最后有分号;必须成对出现;是并行语句,必须放在结构体中。

组合逻辑VHDL设计——门电路

组合逻辑VHDL设计——门电路

实验名称:组合逻辑VHDL设计——门电路一、2输入与门的VHDL设计1.实体框图2.程序设计①编译前的程序Entity and2a isport(a,b:in bit;c:out bit);end entity and2a;Architecture ex1 of and2a isbeginc<=a and b;end architecture ex1;②程序编译错误情况:无3.仿真波形图4.仿真波形分析有0出0;全1出1。

当A和B中有一个为低电平,C则为低电平;当A和B都为高电平时,C则为高电平。

二、3输入与非门的VHDL设计2.程序设计①编译前的程序Entity nand3a isport(A,B,C:in bit;Y:out bit);end entity nand3a;Architecture ex2 of nand3a isbeginY<=not(A and B and C);end Architecture ex2;②程序编译错误情况:无3.仿真波形图4.仿真波形分析有0出1,全1出0。

当A,B,C中有一个为低电平时,Y则为高电平;当A,B,C三者全为高电平时,Y则为低电平。

三、全加器的VHDL设计2.程序设计①编译前的程序Entity nand3B isport(A,B,CI:in bit;S,CO:out bit);end Entity nand3B;Architecture ex3 of nand3B issignal c,d,e,f :bit;beginc<=A xor B;d<=c and CI;e<=A and B;f<=e nor d;S<=c xor CI;CO<=not f;end architecture ex3;②程序编译错误情况:无3.仿真波形图4.仿真波形分析A B CI CO S0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1这是一个全加器,其中A,B为输入,CI为来自低位的进位。

南京邮电大学EDA-VHDL程序设计报告 2

南京邮电大学EDA-VHDL程序设计报告 2

南京邮电大学课程设计报告设计类别: EDA-VHDL专业名称: 电子信息工程班级学号: b10010910学生姓名: 0基本题 : 矩阵键盘按键的数码管显示综合题 : 信号发生器设计指导教师: 梅中辉日期: 2013年9月15日—9月30日一课题内容:要求学生设计出4*4矩阵键盘对某一按键按下就在数码管显示一个数字。

按键从左上角到右下角依次为1,2, (16)二对选题的理解键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。

同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。

获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配,找到键值后在7段码管显示。

二、获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配,找到键值后在7段码管显示。

三、实现方案系统原理图1234567890A B CDEF弹跳消除电 路键盘译码电 路键盘扫描电路键盘扫描信号键盘输入按键数据数码管显示分频电路弹跳消抖时钟信号键盘扫描时钟信号系统时钟信号3.1.1 矩阵式键盘扫描的工作原理1234567890A B CDEFKY0(00) 1110KY1(01) 1101KY2(10) 1011KY3(11) 0111键盘扫描信号经提升电阻至VCCKX3KX2KX1KX0图3.2 4*4矩阵式键盘的面板配置矩阵式键盘是一种常用的电子输入装置,在平常的生活中,矩阵式键盘在通信设备如手机,信息终端如计算机,家用电器如油烟机等各式电子产品上都具有很重要的作用。

乐曲硬件演奏电路的VHDL设计报告+程序

乐曲硬件演奏电路的VHDL设计报告+程序

一、设计题目:乐曲硬件演奏电路的VHDL设计二、设计目标:了解一般乐曲演奏电路设计设计方法,学习VHDL语言,熟悉EDA设计软件QuartusII和MAX+plusⅡ,加强独立完成电子设计的能力。

(1)能够播放“梁祝”乐曲。

(2)能够通过LED显示音阶。

(3)(选作)具有“播放/停止”功能,并在此基础上实现“按键演奏”的电子琴功能。

主芯片型号为FLEX10K10LC84-4三、实验电路的工作原理:(演奏电路逻辑图)组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能够连续演奏所需的两个基本要素,设计演奏电路的关键就是获得这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果。

演奏电路逻辑图有三部分:音乐节拍和音调发生器、简谱码对应的分频预置数查表电路、数控分频与演奏发生器。

演奏电路逻辑图:四、设计内容:1.完成程序的编辑工作。

2.将音乐数据制作成LMP_ROM文件.3.将程序加载到MAX+plusⅡ中进行编译、仿真,并保存仿真结果。

4.到实验室进行下载验证。

引脚进行锁定,然后下载到实验芯片中观察实验结果。

五、仿真结果:1.音乐节拍和音调发生器(NoteTabs.VHD)notetabs模块中设置了一个8位二进制计数器(计数最大值138),作为音符数据ROM的地址发生器。

这个计数器的计数频率选为4Hz,即每一个计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。

随着notetabs模块中的计数器按4Hz的时钟速率作为加法计数时,即随地址值递增时,音符数据ROM中的音符数据将从ROM中通过ToneIndex[3..0]端口输向ToneTaba模块,“梁祝”乐曲就开始连续自然的演奏起来了。

Notetabs模块仿真图:2.简谱码对应的分频预置数查表电路(T oneTaba.VHD)音符的持续时间需根据乐曲的速度及每个音符的节拍数来确定,tonetaba模块的功能首先是为speakera提供决定所发音符的预置数,而此数在speakera输入口停留的时间即为此音符的节拍值。

试卷 vhdl 湖南科技大学

试卷 vhdl 湖南科技大学

简答题20分填空题10分选择题10分程序分析题3题30分编程题3题30分1.课本中第八章中逻辑电路设计,是考试重点,一些程序和类似程序会在考试中以程序分析题和编程题形式出现。

(以课本及上课PPT为参考)2.除了第八章外,例1-1 例1-2 例5-2 例5-5例6-8 例6-9 例6-10 例6-12 例6-13,这些程序也很经典,1.VHDL 的全称是什么?利用它设计硬件电路有哪些优点?答:VHDL 的全称Very High Speed Integrated Circuit Hardware Description Language(超高速集成电路硬件描述语言,利用VHDL 设计硬件电路具有以下特点:(1)设计文件齐全、方法灵活、支持广泛(2)系统硬件描述能力强(3)VHDL 语言可以与工艺无关编程(4)VHDL 语言标准、规范、易于共享和复用2.一个完整的VHDL语言程序由哪几个部分构成,每个部分作用是什么。

答:一个完整的VHDL语言程序由库,包集合,实体,构造体和配置五个部分组成。

库包含若干个包集合,确定程序所需要调用的函数,数据类型等;包集合内存有具体函数,数据类型的定义;实体说明系统的端口与类属参数;构造体完成系统内部逻辑关系与具体电路的实现;配置则说明实体与构造体的连接关系,通过配置,同一实体可搭配不同构造体。

3.简述VHDL语言构造体的描述方式及各自特点。

答:行为描述,RTL描述方式,结构描述方式。

行为描述主要是对系统数学模型的描述,一般进行仿真难以进行逻辑综合;RTL描述主要是对系统内部构造与逻辑关系的描述,可以进行逻辑综合;结构描述大量使用模块化描述方式,采用component语句,block语句,便于实现积木化结构,能够进行逻辑综合。

4.VHDL 语言中客体的概念及使用范围VHDL 语言中可以赋予一个值的对象称为客体;客体主要包括三种:信号、常数、变量;信号和常数为全局量,变量为局部量5.请从申明格式、赋值符号、赋值生效时间、作用范围等方面对信号和变量进行比较分析。

VHDL程序设计教程习题解答

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 ISPORT (clk,clr,en:IN STD_LOGIC;Qa,qb,qc,qd:OUT STD_LOGIC);END countA;ARCHITECTURE example OF countA ISSIGNAL count_4:STD_LOGIC_vector (3 DOWNTO 0);BEGINQa <= count_4(0);Qb <= count_4(1);Qc <= count_4(2);Qd <= count_4(3);PROCESS (clk,clr)BEGINIF (clr = '1' ) THENCount_4 <= "0000";ELSIF (clk'EVENT AND clk = '1' ) THENIF (en = '1' ) THENIF (count_4 = "1111") THENcount_4 <= "0000";ELSEcount_4 <= count_4+ '1';END IF;END IF;END IF;END PROCESS;END example;第2章思考题解答1.什么叫对象?对象有哪几个类型?答:在VHDL语言中,凡是可以赋于一个值的客体叫对象(object)。

VHDL程序题

VHDL程序题

1.以下是一位全加器的VHDL设计,试补充完整。

library ieee; --半加器设计use ieee.std_logic_1164.all;entity h_adder isport (a, b : in std_logic;co, so : out std_logic);end h_adder;architecture fh1 of h_adder isbeginso <= not(a xor (not b)) ;co <= a and b ;end architecture fh1;library ieee; --或门设计use ieee.std_logic_1164.all;entity or2a isport (a,b: in std_logic;c: out std_logic);end or2a;architecture rtl of or2a isbeginc<= a or b after 10 ns;end rt;library ieee; --全加器设计use ieee.std_logic_1164.all;entity f_adder ISport (ain,bin,cin : in std_logic;cout,sum : out std_logic );end entity f_adder;architecture fd1 OF f_adder IScomponent h_adderport (a, b : in std_logic;co, so : out std_logic);end component;component or2aport (a,b: in std_logic;c: out std_logic);end component;signal d, e, f : std_logic;beginu1 : h_adder port map(a=>ain, b=>bin, co=>d, so=>e);u2 : h_adder port map (a=>e, b=>cin, co=>f, so=>sum);u3 : or2a port map (a=>d, b=>f, c=>cout);end architecture fd1;2.以下是含有使能端且具有同步清零的加减计数器的VHDL设计,试补充完整。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VHDL 程序设计题四、 编程题(共50分)1、请补全以下二选一VHDL 程序(本题10分) Entity mux isport(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 begintmp1<=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 ISPORT (a ,b:IN STD_LOGIC; (4)&a byy:OUT STD_LOGIC); (6)END nand2;ARCHITECTURE nand2_1 OF nand2 IS (8)BEGINy <= 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 ISPORT (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 ISSIGNAL indata:STD_LOGIC_VECTOR (2 DOWNTO 0); (4)BEGINindata <= c & b & a; (6)PROCESS (indata,g1,g2a,g2b)BEGINIF (g1 = '1' AND g2a = '0' AND g2b = '0' ) THEN (8)CASE indata ISWHEN "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;ELSEy <= ""; (14)END IF;END PROCESS; (16)END rtl;4、三态门电原理图如右图所示,真值表如左图所示,请完成其VHDL程序构造体部分。

(本题14分)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tri_gate ISPORT(din,en:IN STD_LOGIC;dout : OUT STD_LOGIC);END tri_gate ;ARCHITECTURE zas OF tri_gate ISBEGINPROCESS (din,en)BEGINIF (en=‘1') THEN dout <= din;ELSE dout <= ‘Z’;END IF;END PROCESS ;END zas ;四、编程题(共50分)1、根据一下四选一程序的结构体部分,完成实体程序部分(本题8分)entity MUX4 isport( (2)s: in std_logic_vector(1 downto 0); (4)d: in std_logic_vector(3 downto 0); (6)y: out std_logic (8));end MUX4;architecture behave of MUX4 isbeginprocess(s)beginif (s="00") theny<=d(0);elsif (s="01") theny<=d(1);elsif (s="10") theny<=d(2);elsif (s="11") theny<=d(3);elsenull;end if;end process;end behave;2、编写一个数值比较器VHDL程序的进程(不必写整个结构框架),要求使能信号g低电平时比较器开始工作,输入信号p = q,输出equ为‘0’,否则为‘1’。

(本题10分)process(p,q) (2)beginif g='0' then (4)if p = q thenequ <= '0'; (6)elseequ <= '1'; (8)end if;elseequ <= '1'; (10)end if;end process;3、填写完成一个8-3线编码器的VHDL程序(16分)。

Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity eight_tri isport(b: in std_logic_vector(7 downto 0); (2)en: in std_logic;y: out std_logic_vector(2 downto 0) (4));end eight_tri;architecture a of eight_tri is (6)signal sel: std_logic_vector(8 downto 0);beginsel<=en & b; (8)y<= “000” when (sel=””)else“001” when (sel=””)else(10)“010” when (sel=””)else“011” when (sel=””)else“100” when (sel=””)else(12)“101” when (sel=””)else“110” when (sel=””)else(14)“111” when (sel=””)else(16)“zzz”;end a;4、图中给出了4位逐位进位全加器,请完成其VHDL程序。

(本题16分)library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity full_add isport (a,b: in std_logic_vector (3 downto 0); (2)carr: inout std_logic_vector (4 downto 0);sum: out std_logic_vector (3 downto 0));end full_add;architecture full_add_arch of full_add iscomponent adder (4)port (a,b,c: in std_logic;carr: inout std_logic;sum: out std_logic (6));end component;begincarr(0)<='0';u0:adder port map(a(0),b(0),carr(0),carr(1),sum(0));u1:adder port map(a(1),b(1),carr(1),carr(2),sum(1)); (8)(10)u2:adder port map(a(2),b(2),carr(2),carr(3),sum(2)); (12)u3:adder port map(a(3),b(3),carr(3),carr(4),sum(3)); (14)(16)end full_add_arch;四、编程(共50分)1、完成下图所示的触发器。

(本题10分)library IEEE;use IEEE.std_logic_1164.all;entity VposDff isport (CLK, CLR, D: in STD_LOGIC; ----------2分Q, QN: out STD_LOGIC ); ----------4分end VposDff;architecture VposDff_arch of VposDff isbeginprocess ( CLK, CLR ) ----------6分beginif CLR='1' then Q <= '0'; QN <='1';elsif CLK'event and CLK='1' thenQ <= D; QN <= not D; ----------8分end if;end process; ----------10分end VposDff_arch;2、完成以下4位全加器代码(本题10分)library IEEE;use IEEE.std_logic_1164.all;entity full_add isport (a,b: in std_logic_vector (3 downto 0);cin: in std_logic;cout: out std_logic;sum: out std_logic_vector (3 downto 0));end full_add;architecture full_add_arch of full_add iscomponent adderport ( a,b,c: in std_logic;carr: out std_logic;sum: out std_logic );end component;signal c1,c2,c3: std_logic; 2分beginu0:adder port map(a(0),b(0),cin,c1,sum(0)); 4分u1:adder port map(a(1),b(1),c1,c2,sum(1)); 5分u2:adder port map(a(2),b(2),c2,c3,sum(2)); 6分u3:adder port map(a(3),b(3),c3,cout,sum(3)); 10分end full_add_arch;3、补充完整如下代码,使之完成4状态不断循环。

相关文档
最新文档