4、VHDL文本输入法设计实例
参考VHDL源代码
思考题
利用VHDL文本输入法设计一个带进位 的3位加法器,它由S2的8位拨动开关 中的6位 做加数和被加数的输入,低位进位的 输入为板上的KEY5,6位输入分别在 Led灯上显示,其中LD1-LD3表示加数 ,LD5-LD7表示被加数,相加后的结果 通过LD13到LD16表示,LD13表示进位。
(2)在文本编辑窗输入如下源代码:
(3)文本存盘 选择File/Save As命令,找到已设立的文件夹 D:/SHIJIAN/DECODER,存盘文件名应与实体名 一致,即decoder.vhd,然后进入建立工程项 目流程。 后面的建立工程项目、编译综合、仿真及硬件 测试步骤请参阅原理图输入设计全过程
内容简介
基本知识回顾 3-8译码器VHDL文本输入法设计 分频器VHDL文本输入法设计
一、基本知识回顾 1、概述
原理图输入法并非严格意义上的自顶而下 的数字系统设计方法,这种设计方法仅适 用于小型数字系统,而VHDL文本输入法 则适用于任何规模的数字系统设计,能够 大大简化设计任务,可以自行设计所需要 的逻辑电路,实现真正意义上的创新。
3、VHDL语言的基本语句 (1)顺序描述语句 WAIT语句、IF语句、CASE语句、LOOP语句、 EXIT语句、RETURN语句、NULL语句、REPORT 语句等 (2)并行语句 进程语句、块语句、并行过程调用语句、断 、并行信号赋值语句、信号代入语句、生成 语句等
二、VHDL文本输入法设计3-8译码器 关于实验原理、输入输出真值表及硬件准 备与原理图输入法设计3-8译码器完全一 样,在此不赘述。 VHDL文本输入设计法和原理图输入设计的 步骤除了设计输入有所不同,其余步骤基 本相同,这里仅提供设计输入的步骤及 VHDL源代码。
编辑VHDL文本文件的步骤
1、建立文件夹 选择路径,建立工作库目录文件夹。比如建 立文件夹为D:/SHIJIAN/DECODER 2、输入源程序 (1)打开Quartus II,选择File/New命令。 在New窗口中的Device Design Files中选 择硬件设计文件类型为VHDL File,单击OK 按钮后进入VHDL文本编辑窗口。
2、VHDL程序ቤተ መጻሕፍቲ ባይዱ本结构
实描 体述 结体 构1 结体 构n
实体类似于电路原理图中所定义的模块 符号,从外面看器件外貌,有输入端口 和输出端口,也可以定义参数;结构体 则具体地指明设计单元的行为、元件及 内部的连接关系,结构体对设计单元的 输入输出关系可以用3种方式进行描 述,即行为描述、寄存器传输描述和结 构描述。
思考题
1、修改上述3-8译码器的VHDL源代码, 设计4-16线译码器,并在实验系统进行 验证。 2、仿照下图所示真值表,利用VHDL文本 输入法设计8-3优先权编码器。(注意: 输入Ein用带自锁的按键K5控制)
真值表
参 考 源 代 码
三、 分频器VHDL文本输入法设计
设计任务: 利用VHDL文本输入法设计分频器,输入采用标准 的4.194304MHz时钟,输出为8.192KHz.通过实 验系统予以验证,频率仍采用虚拟示波器观测。
特别提醒:和原理图输入设计一样,编译成功后,打 开译码器VHDL文本输入界面,选择File菜单的 Create/Update选项下的Create Symbol Files for Current File,将当前文件变成一个包装好的单一元 件decoder.bsf,并被放置在工程文件夹中以备层次 化设计中使用。
第一章VHDL文本输入设计方法
第一章VHDL文本输入设计方法1.1 编辑输入并存盘VHDL原文件首先应该建立好工作库目录,以作设计工程项目的工作库。
例如设文件夹为:E:\muxfile ,以便将设计过程中的相关文件存储在此。
任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关文件的文件夹,此文件夹将被EDA软件默认为工作库(Work Library)。
注意,文件夹不能用中文。
然后打开MAX+plusII,选择菜单“File”→“New…”,出现对话框,在框中选中“Text Editor file”,按“OK”按钮,即选中了文本编辑方式。
在出现的“Untitled-Text Editor”文本编辑窗(图1-1)中键入图1-1所示的VHDL程序(2选1多路选择器),毕后,选择菜单“File→Save”,即出现如图1-1所示的“Save As”对话框。
首先在“Directories”目录框中选择自己已建立好的存放本文件的目录E:\MUXFILE(用鼠标双击此目录,使其打开),然后在“File Name”框中键入文件名“MUX21A.VHD”,按“OK”按钮,即把输入的文件放在目录E:\MUXFILE中了。
注意,1、VHDL程序文本存盘的文件名必须与文件的实体名一致,如MUX21A.VHD;2、文件的后缀将决定使用的语言形式,在MAX+plusII中,后缀为.VHD表示VHDL文件;后缀为.TDF表示AHDL文件等。
如果后缀正确,存盘后对应该语言的文件中的主要关键词都会改变颜色。
1.2 将当前设计设定为工程为了使Max+plusII能对输入的设计项目进行处理,在编译/综合MUX21A.VHD之前,需要设置此文件为顶层文件,或称工程文件:Project,或者说将此项设计设置成工程:选择菜单“File”→Project→“Set Project to Current File”,当前的设计工程即被指定为MUX21A 。
VHDL实验(完整版)
实验一 Quartus II软件使用与十进制计数器一、实验目的熟悉使用Quartus II软件二、实验内容安装Quartus II软件并成功注册、使用Quartus II软件建立工程并完成十进制计数器三、实验仪器、设备计算机、Quartus II软件四、实验步骤1.打开安装文件位于…quartusII6.0\disk1\install.exe,根据提示进行下一步操作,在弹出框中选择第一个选项,install Quartus II and Related Software。
Quartus II的安装步骤1接下来的安装中选择下一步,到下图选择界面。
只勾选安装Quartus II 6.0即可。
Quartus II的安装步骤22.完成安装步骤2后选择下一步至下图所示,选择完全安装complete,再继续点击下一步至安装开始。
完全安装Quartus II软件软件安装途中出现如下图所示情况时,选择安装文件中的…disk2\disk2\quartus,然后选择确定——OK继续安装直到结束。
安装过程中换disk2路径Quartus II软件的安装至此结束,此安装步骤WINXP/WIN 7均有效,WIN8若有问题,请修改兼容权限。
3.软件注册。
软件安装结束后打开Quartus II软件将出现下图所示情况,这是没有注册的提醒,我们必须先进行注册才能建立工程文件,若大家忽略了这个提示窗口,直接进行工程建立等工作,任何仿真图和编译功能都无法正常使用,等于白费功夫浪费时间,还要重新(由于软件注册是绑定MAC物理地址,所以每台机器的license 做,非常影响学习兴趣和情绪。
是完全不一样的,实验室的电脑已经安装好了Quartus II软件,但是没有注册,所以做实验的时候一点要先注册,不然就白做了)Quartus II软件提示未注册弹窗注册方法,打开quiic7.1 lisence 生成器文件夹中的keymaker.exe,在弹出的窗口中点击Make License,在文件夹中就会出现和本台机器相匹配的license.dat。
《EDA技术及应用》实验指导书
实验一组合逻辑器件设计一、实验目的1、通过一个简单的3-8译码器的设计,掌握组合逻辑电路的设计方法。
2、掌握组合逻辑电路的静态测试方法。
3、初步了解QUARTUS II原理图输入设计的全过程。
二、实验主要仪器与设备1、输入:DIP拨码开关3位。
2、输出:LED灯。
3、主芯片:EP1K10TC100-3。
三、实验内容及原理三-八译码器即三输入,八输出。
输出与输入之间的对应关系如表1-1-1所示。
表1-1 三-八译码器真值表四、预习要求做实验前必须认真复习数字电路中组合逻辑电路设计的相关内容(编码器、译码器)。
五、实验步骤1、利用原理图设计输入法画图1-1-1。
2、选择芯片ACEX1K EP1K10TC100-3。
3、编译。
4、时序仿真。
5、管脚分配,并再次编译。
6、实验连线。
7、编程下载,观察实验结果。
图1-1 三-八译码器原理图六、实验连线用拨码开关的低三位代表译码器的输入(A,B,C),将之与EP1K10TC100-3的管脚相连;用LED灯来表示译码器的输出(D0~D7),将之与EP1K10TC100-3芯片的管脚相连。
拨动拨档开关,可以观察发光二极管与输入状态的对应关系同真值表中所描述的情况是一致的。
七、实验结果八、思考题在输入端加入使能端后应如何设计?附:用硬件描述语言完成译码器的设计::LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY T2 ISPORT(A: IN STD_LOGIC_VECTOR(2 DOWNTO 0);Y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END T2;ARCHITECTURE A OF T2 ISBEGINWITH A SELECTY <= "00000001" WHEN "000","00000010" WHEN "001","00000100" WHEN "010","00001000" WHEN "011","00010000" WHEN "100","00100000" WHEN "101","01000000" WHEN "110","10000000" WHEN OTHERS;END A;实验二组合电路设计一、实验目的1、掌握组合逻辑电路的设计方法。
vhdl编程实例
vhdl编程实例VHDL编程实例- 设计与实现一个4位的全加器在本篇文章中,我们将一步一步地回答如何设计和实现一个4位的全加器。
VHDL编程语言将是我们用于描述和模拟这个电路的工具。
第一步:理解全加器的原理在编写代码之前,我们首先需要理解全加器的原理。
全加器是一种用于对两个二进制数字进行相加的电路。
它接收三个输入信号:两个位的输入(A 和B)以及一个进位输入(C_in)。
全加器的输出结果为一个位的和(S)和一个进位输出(C_out)。
我们可以使用如下的真值表来描述全加器的输出结果:输入信号输出结果A B C_in S C_out0 0 0 0 00 0 1 1 00 1 0 1 00 1 1 0 11 0 0 1 01 0 1 0 11 1 0 0 11 1 1 1 1了解了全加器的工作原理后,我们可以开始编写代码了。
第二步:编写全加器的VHDL代码我们将使用VHDL语言来描述和模拟全加器。
下面是一个简单的4位全加器的VHDL代码实现:vhdlEntity声明entity full_adder isport (A, B : in std_logic_vector(3 downto 0);C_in : in std_logic;S : out std_logic_vector(3 downto 0);C_out : out std_logic);end full_adder;Architecture声明architecture Behavioral of full_adder isbeginprocess(A, B, C_in)variable carry : std_logic;begincarry := C_in;for i in 0 to 3 loopS(i) <= A(i) xor B(i) xor carry;carry := (A(i) and B(i)) or (carry and (A(i) xor B(i)));end loop;C_out <= carry;end process;end Behavioral;在此代码中,我们首先声明了一个实体(entity)和一个架构(architecture)。
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 是触发器的输出端。
用文本输入法设计2选1多路选择器 EDA实验报告
用文本输入法设计2选1多路选择器1.实验目的和要求本实验为综合性实验,综合了简单组合电路逻辑、QuartusII的使用方法、多层次电路设计、仿真和硬件测试等内容。
其目的是熟悉QuartusII的VHDL文本设计流程全过程。
2.实验原理2选1多路选择器真值表s a b yL L ×LL H ×HH ×L LH ×H H3.主要仪器设备(实验用的软硬件环境)实验的硬件环境是:微机一台GW48 EDA实验开发系统一套电源线一根十芯JTAG口线一根USB下载线一根USB下载器一个实验的软件环境是:Quartus II 9.0软件4.操作方法与实验步骤首先利用QuartusII完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测试等步骤,然后进行仿真。
最后在实验系统上进行硬件测试,实际验证本项实验的功能。
将设计好的2选1多路多路选择器看成是一个元件mux21a,利用元件例化语句描述下图,并将此文件放在同一目录E:\muxfile中。
5.实验内容及实验数据记录(1)程序设计ENTITY mux21a ISPORT ( a, b, s: IN BIT;y : OUT BIT );END ENTITY mux21a;ARCHITECTURE one OF mux21a ISBEGINPROCESS (a,b,s)BEGINIF s = '0' THEN y <= a ; ELSE y <= b ;END IF;END PROCESS;END ARCHITECTURE one ;(2)软件编译(3)仿真波形图(4)硬件测试结果将程序下载到实验板,按下K1键可以得到不同的鸣叫效果。
改变频率的选择,可以改变蜂鸣器的鸣叫效果。
6.实验数据处理与分析(1)程序分析1、一般的,可综合的,即能将VHDL程序编译成可实现的电路端口模式有如下四种:IN(输入端口),OUT(输出端口),INOUT(双向端口),BUFFER(缓冲端口),本二选一实验的实体中定义三个输入引脚分别为:a、b、s和一个输出引脚y,四个引脚的数据类型均为bit.2、使用VHDL描述语句实现功能当s=0时候选择输入a,当s=1时候选择输入b,即实现二选一的功能。
用VHDL设计键盘输入显示方案
1、显示控制-- Module Name: DispCtrl - Behavioral-- Description: Generates the immage for the VGA Demo--------------------------------------------------------------------------------library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity DispCtrl isPort (clk25MHz : in std_logic;Hcnt: in std_logic_vector(9 downto 0); -- horizontal counterVcnt: in std_logic_vector(9 downto 0); -- verical counterromdatain : in std_logic_vector(7 downto 0); -- vvvvvvvvvvvvvvvvvvvoutRed : out std_logic_vector(2 downto 0); -- final coloroutGreen: out std_logic_vector(2 downto 0); -- outputsoutBlue : out std_logic_vector(1 downto 0);adrV ideoMem : out std_logic_vector(3 downto 0));-- addr in the Logo immageend DispCtrl;architecture Behavioral of DispCtrl is-- constants for Synchro moduleconstant PAL:integer:=640; --Pixels/Active Line (pixels)constant LAF:integer:=480; --Lines/Active Frame (lines)-- constants for VGA Democonstant HBorder:integer:=40; -- Horizontal border (pixels)constant VBorder:integer:=40; -- V ertical border (lines)constant Hsize:integer:=7; -- Horizontal logo size (pixels) 标志的水平尺寸64 constant Vsize:integer:=11; -- V ertical logo size (pixels) 标志的垂直尺寸64 signal Horigin:integer:=60; -- Horizontal logo origin (pixels) 标志的水平原点signal V origin:integer:=60; -- V ertical logo origin (pixels) 标志的垂直原点signal adrVideoPixel: std_logic_vector(2 downto 0);signal adrVideoLine: std_logic_vector(3 downto 0);signal cntDyn: integer range 0 to 2**28-1; -- dynamic effect countersignal intHcnt: integer range 0 to 800-1; --PLD-1 - horizontal counter--- 水平计数器signal intVcnt: integer range 0 to 521-1; -- LFD-1 - verical counter --- 垂直计数器begin-- mapping the std_logic_vector ports to internal integersintHcnt <= conv_integer(Hcnt);intVcnt <= conv_integer(Vcnt);adrV ideoPixel <= conv_std_logic_vector(intHcnt - Horigin,4);adrV ideoLine <= conv_std_logic_vector(intVcnt - V origin,4);adrV ideoMem <= adrVideoLine;-- counter for color bar dynamicsdiynamic:process (clk25MHz)beginif clk25MHz'event and clk25MHz = '1' thencntDyn <= cntDyn+1;end if;end process;mixer: process(clk25MHz,intHcnt, intVcnt)beginif intHcnt < PAL and intVcnt < LAF then -- 在激活的显示区域if intHcnt >= Horigin and intHcnt <= Horigin + Hsize andintVcnt >= V origin and intVcnt <= V origin + Vsizethen -- image --rom中的数据输出作为色差的信息;if romdatain(adrVideoPixel)='0' thenoutRed<="100";outGreen<="100";outBlue(1 downto 0) <="01";else -- the moving lines area-- redoutRed(2 downto 0) <="000";-- greenoutGreen(2 downto 0) <="000";-- blueoutBlue(1 downto 0) <="00";end if;elseoutRed <= (others => '0');outGreen <= (others => '0');outBlue <= (others => '0');end if;end if;end process;-- place the logo at the mouse pos, if left button pressedend Behavioral;2 、PS接口定义见附件中Keyctrl.vhd和Ps2keyboard.vhd3、状态灯指示字母输入见附件中SnakeledDemo.vhd。
(完整word版)VHDL语言实例
VHDL语言实例例 1:设计一七段显示译码器,用它来驱动七段发光管 LED显示十六进制数字 0 到9 和字母 A 到 F。
LED显示数码管为共阳极。
LIBRARYieee;USE ieee.std_logic_1164.all;ENTITY HEX2LEDISPORT(HEX :IN std_logic_vector(3 DOWNTO0);LED : OUT std_logic_vector(6 TO0));图例 1 七段显示译码END 器实体 HEX2LED;ARCHITECTURE HEX2LED_arc OF HEX2LED ISBEGIN--HEX-TO-SEVEN-SEGMENT DECODER--SEGMENT ENCODING----------5 ||1------ <--6--4 ||2--------3WITH 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 ISPORT(d0,d1,d2,d3,d4,d5,d6,d7:INBIT;s :INTEGERRANGE0TO7;out1 :OUT BIT);END sels;图例 2(a)八选一数据选择器实体ARCHITECTURE sels_arc OF sels ISBEGINWITH 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;2)A,B,C 是通道选择信号 ,I0,I1,I2,I3,I4,I5,I6,I7数据输入Q 是数据输出LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY mux8 ISPORT(I0,I1,I2,I3,I4,I5,I6,I7,A,B,C:INstd_logic;Q :OUT std_logic);END mux8;图例2(b) 八选一数据选择器实体ARCHITECTURE mux8_arc OF mux8 ISSIGNAL sel :INTEGER;BEGINQ <= I0 AFTER 10 ns WHEN sel= 0 ELSEI1 AFTER 10 ns WHEN sel= 1 ELSEI2 AFTER 10 ns WHEN sel= 2 ELSEI3 AFTER 10 ns WHEN sel= 3 ELSEI4 AFTER 10 ns WHEN sel= 4 ELSEI5 AFTER 10 ns WHEN sel= 5 ELSEI6 AFTER 10 ns WHEN sel= 6 ELSEI7 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 是触发器的输出端。
基于VHDL文本输入法的简易电子琴的设计
EDA 课程设计报告书课题名称基于V HD L 文本输入法的简易电子琴的设计 姓 名 学 号 院 系 专 业 指导教师年 月 日※※※※※※※※※※※※※ ※※※※※※※※※※※级学生EDA 课程设计一、设计任务及要求设计任务设计一个简易的八音符电子琴,其由乐曲自动演奏模块、音调发生模块和数控分频模块三个部分组成。
要求(1) 通过按键输入来控制音响。
(2)系统演奏时通过按键可以选择是手动演奏还是自动演奏已存入的乐曲。
(3) 能够自动演奏多首乐曲,且乐曲可重复演奏。
指导教师签名:年月日二、指导教师评语:指导教师签名:年月日三、成绩验收盖章年月日基于VHDL文本输入法的简易电子琴的设计1设计目的本课程设计主要是基于VHDL文本输入法设计乐曲演奏电路,该系统基于计算机中时钟分频器的原理,采用自顶向下的设计方法来实现,通过按键输入来控制音响或者自动演奏已存入的歌曲。
系统由乐曲自动演奏模块、音调发生模块和数控分频模块三个部分组成。
系统实现是用硬件描述语言VHDL按模块化方式进行设计,然后进行编程、时序仿真、电路功能验证,奏出美妙的乐曲。
该设计最重要的一点就是通过按键控制不同的音调发生,每一个音调对应不同的频率,从而输出对应频率的声音。
2设计的主要内容和要求(1)设计一个简易的八音符电子琴,它可通过按键输入来控制音响。
(2)系统演奏时通过按键可以选择是手动演奏还是自动演奏已存入的乐曲。
(3)能够自动演奏多首乐曲,且乐曲可重复演奏。
3 整体设计方案本课程设计目的在于灵活运用EDA技术编程实现一个简易电子琴的乐曲演奏,不同的音阶对应不同频率的正弦波。
按下每个代表不同音阶的按键时,能够发出对应频率的声音。
故系统可分为乐曲自动演奏模块(AUTO)、音调发生模块(TONE)和数控分频模块(FENPIN)三部分。
系统的整体组装设计原理图如图3-1。
图3-1 系统的整体组装设计原理图由于设计分模块组成,每个单独的模块都是一个完整的源程序,分别实现不同性质的功能,但是每个模块又是紧密关联的,前一个模块的输出很可能是后一模块的输入。
实验四用VHDL文本设计输入方法实现触发器
创建一个工程并命名为“DFF2”建立一个VHDL File并命名为“DFF2”,编写的D触发器文本如四中截图所示,进行编译仿真,设计的波形图如下。
D触发器的实验程序图:
4、仿真波形:
5、实验说明:
当S=0且R=1时,不论输入端D为何种状态,都会使Q=1,即触发器置1;当S=1且R=0时,触发器的状态为0,S和R通常又称为直接置位和清零端。当S=1且R=1时:当CLK端输入由0变为1时,Q端的输出值取决于D端的输入。当CLK端由1变为0时,Q端的输出保持不变,与D端输入无关。实现了异步置位清零上升沿触发的D触发器功能。
实验名称:实验四用VHDL文本设计输入方法实现D触发器学生姓名:班级:学号:
1、实验目的及要求:
熟悉Quartus II的VHDL文本设计过程,学习简单时序电路的设计、仿真和测试。
2、实验原理:
利用Quartus II完成异步置位清零高上升沿触发的D触发器的文本编辑输入和仿真测试等步骤,给出D触发器的功能仿真波形。最后在实验系统上进行硬件测试,验证本项设计的功能。
根据D触发器的方程 及功能表:
D
Q
Q’
0
0
0
0
1
0
1
0
1
1
1
1
由此可知D触发器的工作原理:当SD=0且RD=1时,不论输入端D为何种状态,都会使Q=1,Q=0,即触发器置1;当SD=1且RD=0时,触发器的状态为0,SD和RD通常又称为直接置1和0端。当接入高电平时,输出端Q的输出结果只与D端的输入有关。
