实验四_基本时序逻辑电路的VHDL模型
VHDL语言的时序电路设计
VHDL语言的时序电路设计-----设计一个可逆计数译码显示电路一、实验目的掌握VHDL设计的基本方法,进一步熟悉MAX+PLUSII的使用。
二、实验内容1、具有清除端、使能端,计数范围为0—9的可逆计数器设计。
输出为8421BCD码。
2、8421BCD码—七段LED译码显示电路设计。
三、实验条件(1)电脑。
(2)开发软件:MAX+PLUSII。
(3)实验设备:EL—EDA—V型、EDA实验开发系统。
(4)拟用芯片:ACEX1K:EP1K100QC208-3。
四、实验要求1、用VHDL设计上述两个电路,用元件例化的方式实现顶层设计。
2、完成功能仿真和时序仿真。
3、对设计结果进行下载和硬件测试。
提示:设计可以采用自顶向下的设计方法或自底向上的设计方法。
一般采用自顶向下的设计方法,即先对顶层进行系统结构描述,再组建底层设计。
五、实验步骤1、用元件例化的方式实现顶层设计;2、设计具有异步清除端、同步使能端,计数范围为0—9的十进制可逆计数器;3、设计8421BCD码/七段LED的显示译码器。
六、实验设计(1)可逆计数、译码及显示电路的VHDL语言程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;------entity count10_top isport(CLR,EN,UP,CLK: in STD_LOGIC;LED7S: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);CO,BO: OUT STD_LOGIC);end count10_top;-------architecture a of count10_top iscomponent count10port( CLR,EN,UP,CLK: in STD_LOGIC;Q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);CO,BO: OUT STD_LOGIC );end component;component DEC7Sport(A: in STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));end component;SIGNAL D: STD_LOGIC_VECTOR(3 DOWNTO 0);beginU1:count10 PORT MAP (CLR,EN,UP,CLK,D,CO,BO);U2:DEC7S PORT MAP (D,LED7S);end a;----LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity count10 isport(CLR,EN,UP,CLK: in STD_LOGIC;Q: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);CO,BO: OUT STD_LOGIC);end count10;-----architecture b of count10 isbeginProcess(CLR,EN,UP,CLK)beginIF CLR='0' THENQ<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF EN='1' THENIF UP='1' THENIF Q=9 THENQ<="0000";ELSEQ<=Q+1;END IF;ELSEIF Q=0 THENQ<="1001";ELSEQ<=Q-1;END IF;END IF;END IF;END IF;END Process;CO<='1' when Q=9 ELSE'0';BO<='1' when Q=0 ELSE'0';end b;-----LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;entity DEC7S isPORT(A:IN BIT_VECTOR(3 DOWNTO 0);LED7S:OUT BIT_VECTOR(6 DOWNTO 0)); END DEC7S;ARCHITECTURE one OF DEC7S ISBEGINPROCESS(A)BEGINCASE A(3 DOWNTO 0) ISWHEN "0000"=>LED7S<="0111111";WHEN "0001"=>LED7S<="0000110";WHEN "0010"=>LED7S<="1011011";WHEN "0011"=>LED7S<="1001111";WHEN "0100"=>LED7S<="1100110";WHEN "0101"=>LED7S<="1101101";WHEN "0110"=>LED7S<="1111101";WHEN "0111"=>LED7S<="0000111";WHEN "1000"=>LED7S<="1111111";WHEN "1001"=>LED7S<="1101111";WHEN OTHERS=>NULL;END CASE;END PROCESS;END one;(2)仿真波形(1)系统仿真情况系统功能仿真结果与时序仿真结果分别如图1、图2所示:图1、系统功能仿真结果图2、系统时序仿真结果从系统仿真结果可以看出,本系统完全符合设计要求。
vhdl实验报告
vhdl实验报告VHDL实验报告引言:VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,广泛应用于数字电路设计和仿真。
本篇实验报告将介绍我在VHDL实验中的学习和实践经验,包括实验目的、实验过程、实验结果以及对VHDL的理解和展望。
一、实验目的VHDL实验的主要目的是让我们掌握VHDL语言的基本语法和使用方法,能够利用VHDL描述数字电路,并通过仿真和综合工具进行验证和实现。
通过这些实验,我们可以深入了解数字电路的原理和设计方法,提高我们的逻辑设计能力和工程实践能力。
二、实验过程在实验过程中,我们首先学习了VHDL的基本语法,包括实体声明、端口声明、信号声明等。
然后,我们通过实例学习了VHDL的建模方法,包括组合逻辑电路的建模和时序逻辑电路的建模。
在组合逻辑电路的建模中,我们学习了使用逻辑运算符和条件语句描述电路的功能;在时序逻辑电路的建模中,我们学习了使用过程语句和时钟信号描述电路的状态转换。
在学习了VHDL的基础知识后,我们开始进行实验设计。
我们选择了一个简单的数字电路,如4位加法器,来进行实验验证。
首先,我们通过VHDL语言描述了加法器的功能和结构,包括输入端口、输出端口和中间信号。
然后,我们使用仿真工具进行了功能仿真,验证了加法器的正确性。
接着,我们使用综合工具将VHDL代码综合成门级电路,并进行了时序仿真和时序优化,验证了加法器的时序正确性和性能。
三、实验结果通过实验,我们成功地实现了4位加法器的功能,并验证了其正确性和性能。
在功能仿真中,我们输入了不同的测试数据,观察了输出结果,发现加法器能够正确地进行加法运算,并得到了正确的结果。
在时序仿真中,我们观察了电路的时序行为,包括输入信号的变化、输出信号的响应和中间信号的传播延迟等,发现加法器能够在时序上满足要求,并且具有较好的性能。
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。
实验四 实验4 VHDL语言进行简单时序电路——一 JK触发器的设计
实验4 VHDL语言进行简单时序电路——一JK触发器的设计一、实验目的学习在QuartusⅡ下用VHDL语言设计简单时序电路与功能仿真的方法。
二、验仪器设备1、PC机一台2、QuartusⅡ。
三、实验要求1、预习教材中的相关内容,编写出JK触发器的VHDL源程序。
2、用VHDL语言输入方式完成电路设计,编译、仿真。
四、实验内容及参考实验步骤一、设计输入1、开机,进入QuartusⅡ。
2、为本工程设计建立一个文件夹。
3、建立设计文件。
选择File菜单之New项,选择文件类型,本设计选择VHDLFile。
建立一个文本编辑文件4、输入源程序, 保存文件。
注意,必须保存为vhd类型,且文件名与源程序的实体名相同。
二、创建工程并编译1、创建一个新的工程,将多路选择器文件加入工程。
2、编译。
点击Start Compilation按钮进行编译。
如果发现错误,改正后再次编译。
三、仿真1、建立波形文件。
选择File菜单之New项,选择Other Fles中的Vector WaveformFile文件类型,建立一个波形文件2、设定仿真时间。
选择菜单Edit的End Time ….项设定仿真时间域。
例如1us.3、输入端口信号。
选择菜单View的Utility Windows项的Node Finder选项,在弹出得出的对话框中单击List按钮,将需要的端口信号拖倒波形编辑器中。
4、编辑输入波形。
在输入端口加上适当的信号,以便在输出端进行观察。
5、保存文件。
6、进行仿真。
点击Start Simulation按钮进行仿真。
7、观察分析波形。
观察仿真结果,并进行波形分析,看是否与设计相符。
五、实验报告1、根据实验过程写出试验报告2、总结用VHDL语言的设计流程3、总结时序电路的设计方法。
附录JK触发器VHDL源程序library ieee;use ieee.std_logic_1164.all;entity jkff1 isport(j,k:in std_logic;clk:in std_logic;q,qn:out std_logic);end entity jkff1;architecture bhv of jkff1 issignal q1:std_logic;beginprocess(clk)beginif clk'event and clk='1' thenif j='1'and k='0' then q1<='0';elsif j='0'and k='1' then q1<='1';elsif j='1'and k='1' then q1<=not q1;else q1<=q1;end if;end if;end process;q<=q1;qn<=not q1;end architecture bhv;。
EDA-VHDL时序逻辑电路实验
1.QuartusII软件的具体设计步骤1.1建立文件夹在这个文件夹里创建二级文件夹pro_4.5.7存放相应项目、程序文件;在一级文件夹里存放RTL电路和仿真波形文件。
1.2创建工程通过 File => New Project Wizard为工程指定工作目录、分配工程名称以及指定最高层设计实体的名称为reg6。
1.3设计输入通过 File => New 菜单命令,在随后弹出的对话框中选择 VHDL File选项,点击 OK 按钮。
通过File => Save As 命令,将其保存,并加入到项目中。
在VHDL界面输入编码器程序,然后通过 File => Save As 命令保存。
1.4综合和编译选择Processing =>Start Compilation,检查程序语法错误,并生成RTL图。
执行Tools =>Netlist Viewer =>RTL Viewr, 生成RTL图。
1.5模拟仿真在 File 菜单下,点击 New 命令。
在随后弹出的对话框中,选中 Vector Waveform File 选项。
进入波形编辑器窗口工具条。
指定模拟终止时间。
Edit => Node Finder,点击 List 按钮,列出电路所有的端子,全部拉入波形区。
编辑输入激励信号波形。
功能仿真:Processing=>Generate Functional Simulation Netlist,使用命令Processing=>Simulator Tool ,选择fundamatol,开始仿真。
【注】本设计使用QuartusII 9.1版本,内有仿真器。
2.程序设计library ieee;use ieee.std_logic_1164.all;entity reg6 isport(clk:in std_logic;r :in std_logic;d :in std_logic_vector(5downto0);q :out std_logic_vector(5downto0)); end reg6;architecture behavioral of reg6 issignal q_temp:std_logic_vector(5downto0); beginprocess(clk,r)beginif(r='1')thenq_temp<="000000";elsif(clk'event and clk='1')thenq_temp<=d;end if;end process;q<=q_temp;end behavioral;3.RTL电路寄存器RTL电路4.功能仿真波形图:reg6寄存器仿真结果波形分析:仿真图显示,reset为高电平时,输出为000000,其他输出根据clk上升沿来临时跳变为输入,符合逻辑。
基本时序电路设计(使用VHDL语言)
实验报告一、实验目的熟悉利用QuartusⅡ的VHDL文本设计流程,学习基本时序电路的设计、多层次电路设计、编译及仿真全过程。
二、实验内容1.设计含异步清零和同步时钟使能的加法计数器。
(1)代码:(2)仿真波形仿真结果分析:clr为清零端,当clr=‘0’时,计数清零;enb为使能端,当enb=‘1’时,允许计数,enb=‘0’时,禁止计数;cout为输出端,计数范围为0~15。
实验内容(6)(1)原理图:(2)仿真波形2.设计7段数码显示译码器。
(1)代码:(2)仿真波形仿真结果分析:七段显示管中的七段分别对应的是O[6]~O[0],当输入为0时,显示0(01111111),十六进制为3F;当输入为1时,显示1(0000110),十六进制为06,一次类推.实验内容3:(1)代码:(2)计数器和译码器连接电路的顶层文件原理图(2)仿真波形仿真结果分析:该原理图的工作原理跟七段显示管的工作原理是一样的(上一题),只是它又引入了一个4位二进制计数器(包括使能端),让所设计的原理图能自动计数并且显示出来。
3.设计数控分频器。
(1)代码:(2)仿真波形实验仿真分析:当在输入端LOAD给定不同输入数据时,将对输入的时钟信号有不同的分频比.三、实验环境计算机、QuartusII软件四、实验结果与讨论1、从实验的仿真波形分析可知,每个程序都可以满足相对的功能条件,与理论结果一致.2、在设置数控分频器时,我只设置4位的,但如果想得到八位的或更高的只要稍微修改里面的参数即可。
六、总结(1)在设计计数器和译码器的连接电路时,一开始忘记cout=‘0’,导致输出cout都没变化,后面根据仿真波形才发现自己的错误。
(2)设计数控分频器,由于对数控分频器原理理解不够透彻,导致了花的时间比较多,不然前面的实验都能在比较快的时间内完成。
VHDL与数字电路设计实验报告
VHDL与数字电路设计实验报告引言本实验旨在通过使用VHDL编程语言和数字电路设计技术,实现特定功能的电路设计。
本文档将对实验的步骤、设计原理和结果进行详细描述。
实验步骤1. 步骤一:熟悉VHDL编程语言在实验开始之前,团队成员对VHDL编程语言进行了研究和熟悉。
我们了解了VHDL的基本语法、数据类型和结构,并获得了对VHDL设计原理的初步理解。
2. 步骤二:设计功能电路在本实验中,我们选择了一个特定的功能电路进行设计。
我们首先进行了功能需求分析,并根据需求确定了电路的输入输出信号以及主要的逻辑运算。
然后,我们使用VHDL编程语言将电路的逻辑运算实现为代码,并进行了仿真和测试。
3. 步骤三:电路仿真和验证为了验证我们设计的电路功能的正确性,我们使用了VHDL仿真工具进行了电路的仿真和验证。
我们根据输入信号的不同组合,观察输出信号的变化,并与我们预期的结果进行比较。
通过这一步骤,我们确认了我们设计的电路能够按照预期工作。
4. 步骤四:电路实现和测试在确认电路的设计和仿真结果无误之后,我们进一步将电路实现到实际的数字电路平台上,并进行了硬件测试。
我们使用实际的输入信号来测试电路的性能和稳定性,并对输出信号进行观察和分析。
通过这一步骤,我们验证了电路在实际环境中的可行性。
设计原理我们设计的电路基于特定的功能需求,采用了经典的数字电路设计原理。
通过使用VHDL编程语言,我们将电路的逻辑运算实现为逻辑门和触发器的组合。
通过将输入信号连接到适当的逻辑门和触发器,我们实现了所需的功能。
结果与分析经过实验步骤的完成,我们成功地设计和实现了一个具有特定功能的数字电路。
在仿真测试和实际测试中,电路都表现出了良好的性能和稳定性。
根据结果的分析,我们验证了电路的设计原理和逻辑的正确性。
结论本实验通过使用VHDL编程语言和数字电路设计技术,成功地实现了一个具有特定功能的电路设计。
我们的实验结果表明,VHDL和数字电路设计技术在电路设计领域具有重要的应用价值。
数电实验报告
一、实验名称1. 实验一QuartusⅡ原理图输入法设计与实现2. 实验二用VHDL设计与实现组合逻辑电路(一)3. 实验三用VHDL设计与实现时序逻辑电路(二)4.实验四用VHDL设计与实现时序逻辑电路(三)(数码管动态扫描控制器)二、实验任务要求1.实验一:○1用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元;○2用上面生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号;○3用3线-8线译码器(74LS138)和逻辑门设计实现函数F=CBA+CBA+CBA+CBA,仿真验证其功能,并下载到实验班测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号;2.实验二:○1用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个…1‟时,输出为…1‟,否则输出为…0‟,仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号;○2用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号;○3用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能,并下载到实验班测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号;3.实验三:○1用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器。
要求在Quartus Ⅱ平台上设计程序并仿真验证设计;○2用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能,并下载到实验板测试。
要求用拨码开关设定输入信号,发光二极管显示输出信号;○3将分频器、8421十进制计数器、数码管译码器3个电路进行连接并下载测试。
4.实验四:○1用VHDL语言设计并实现六个数码管串行扫描电路,要求同时显示0、1、2、3、4、5这6个不同的数字图形到6个数码管上,仿真验证其功能,并下载到实验板测试;(必做)○2用VHDL语言设计并实现六个数码管循环左滚动,时钟点亮6个数码管,坐出右进,状态为:012345→123450→234501→345012→450123→501234→012345;(选做)○3用VHDL语言设计并实现六个数码管向左滚动,用全灭的数码管填充右边,直至全部变灭,然后再一次从右边一个一个地点亮。
时序逻辑VHDL设计---触发器
实验名称:时序逻辑VHDL设计---触发器一、同步清零(低电平有效)和异步置数(高电平有效)的D触发器的VHDL设计1.实体框图Dclk Reset set QD_FFinst2.程序设计①编译前的程序library ieee;use ieee.std_logic_1164.all;Entity D_FF isport(D,clk,Reset,set:in std_logic;Q:out std_logic);End Entity D_FF;Architecture one of D_FF issignal Q1:std_logic;Beginprocess(clk,Reset,set)Beginif set='1' thenQ1<='1';Elseif clk'event and clk='1' thenif Reset='0' thenQ1<='0';elseQ1<=D;end if;end if;end process;Q<=Q1;End architecture one;②程序编译错误情况错误1:Error (10500): VHDL syntax error at D_FF.vhd(22) near text "process"; expecting "if"错误2:Error (10500): VHDL syntax error at D_FF.vhd(24) near text "architecture"; expecting "if"分析:经检查,发现原程序少了END if,没有与if匹配,添加即可。
③正确的程序library ieee;use ieee.std_logic_1164.all;Entity D_FF isport(D,clk,Reset,set:in std_logic;Q:out std_logic);End Entity D_FF;Architecture one of D_FF issignal Q1:std_logic;Beginprocess(clk,Reset,set)Beginif set='1' thenQ1<='1';Elseif clk'event and clk='1' thenif Reset='0' thenQ1<='0';elseQ1<=D;end if;end if;end if;end process;Q<=Q1;End architecture one;3.仿真波形图4.仿真波形分析当置数端SET出现高电平时,此时不管CP脉冲和D的状态如何,输出立即置为‘1’,实现异步置数的功能;当清零端RESET出现低电平时,而且必须当CP脉冲为上升沿时,输出清零,实现同步清零;除此之外,当CP脉冲为上升沿状态时,D=0,Q=0;D=1,Q=1;二、异步清零(高电平有效)和同步置数(低电平有效)的JK触发器的VHDL设计1.实体框图clk reset setJK[0..1]QJK_FFinst2.程序设计①编译前的程序Library ieee;use ieee.std_logic_1164.all;Entity JK_FF isport( clk,reset,set,J,K:in std_logic;Q:out std_logic);End entity JK_FF;Architecture two of JK_FF issignal Q1:std_logic;beginprocess(clk,reset,set,J,K)beginif reset='1' thenQ1<='0';elseif clk'event and clk='1' thenif set='0' thenQ1<='1';elsecase JK iswhen "00" => Q1<=Q1;when "10" => Q1<='1';when "11" => Q1<=not Q1;when others =>NULL;end case;end if;end if;end if;end process;Q<=Q1;end architecture two;②程序编译错误情况错误1:Error (10482): VHDL error at JK-FF.vhd(19): object "JK" is used but not declared错误2:Error (10523): Ignored construct two at JK-FF.vhd(7) due to previous errors分析:JK为两位,需要定义如下:JK:in std_logic_vector(0 to 1);③正确的程序Library ieee;use ieee.std_logic_1164.all;Entity JK_FF isport( clk,reset,set:in std_logic;JK:in std_logic_vector(0 to 1);Q:out std_logic);End entity JK_FF;Architecture two of JK_FF issignal Q1:std_logic;beginprocess(clk,reset,set,JK)beginif reset='1' thenQ1<='0';elseif clk'event and clk='1' thenif set='0' thenQ1<='1';elsecase JK iswhen "00" => Q1<=Q1;when "01" => Q1<='0';when "10" => Q1<='1';when "11" => Q1<=not Q1;end case;end if;end if;end if;end process;Q<=Q1;end architecture two;3.仿真波形图4.仿真波形分析当清零端ResET出现高电平时,此时不管CP脉冲和JK的状态如何,输出立即清零,实现异步清零的功能;当置数端SET出现低电平时,而且必须当CP脉冲为上升沿时,输出立即置数‘1‘,实现同步置数的功能;除此之外,当CP脉冲为上升沿状态时,J=K=0,Q保持;J=0,K=1,Q置零;J=1,K=0,Q置1;J=K=1,Q翻转一、8位锁存器的VHDL设计1.实体框图D[0..7] clk Q[0..7]latch8a2.程序设计①编译前的程序Library ieee;use ieee.std_logic_1164.all;Entity latch8a isport(D:in std_logic_vector(7 to 0);clk:in std_logic;Q:out std_logic_vector(7 to 0));End latch8a;Architecture three of latch8a issignal q1:std_logic_vector(7 to 0);beginprocess (clk,D)beginif clk'event and clk='1' thenQ1<=D;end if;end process;Q<=Q1;End architecture three;②程序编译错误情况错误:无③正确的程序Library ieee;use ieee.std_logic_1164.all;Entity latch8a isport(D:in std_logic_vector(0 to 7);clk:in std_logic;Q:out std_logic_vector(0 to 7));End latch8a;Architecture three of latch8a issignal q1:std_logic_vector(0 to 7);beginprocess (clk,D)beginif clk'event and clk='1' thenend if;end process;Q<=Q1;End architecture three;3.仿真波形图4.仿真波形分析当CLK脉冲为高电平时,输出为与其相对应的输出。
时序电路VHDL设计(时序逻辑部分)
一、常用组合逻辑电路设计
(1)三态输出电路 (2)比较器 (3)数据选择器 (4)编码器 (5)译码器
(2)译码器
A. 3-8译码器
LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY decode_3to8 IS PORT( a,b,c,G1,G2A,G2B: IN STD_LOGIC; Y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END decode_3to8;
Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; ENTITY cmpab IS PORT ( A, B :in std_logic_vector(7 downto 0); AGTB, ALTB, AEQB : out std_logic ); END cmpab;
Architecture a of bcd is Begin
Seven<= "0111111" when A="0000" else "0000110" when A="0001" else "1011011" when A="0010" else "1001111" when A="0011" else "1100110" when A="0100" else "1101101" when A="0101" else "1111101" when A="0110" else "0000111" when A="0111" else "1111111" when A="1000" else "1101111" when A="1001" else "0000000" ; End a;
实验《二》:组合逻辑与时序逻辑电路的VHDL模型实验
汕头大学实验报告学院:工学院系:电子专业年级成绩:姓名:学号组:实验时间:2010-04-10指导教师签字:________________________________________实验《二》:组合逻辑与时序逻辑电路的VHDL模型实验一、实验目的:1、掌握组合逻辑和时序逻辑电路的设计方法。
2、掌握组合逻辑电路的静态测试方法。
加深FPGA设计的过程,并比较原理图输入和文本输入的优劣。
3、了解通用同步计数器,异步计数器的使用方法。
4、理解积分分频器的原理。
二、硬件要求1、拨位开关。
2、FPGA主芯片:EP1K30QC208。
3、LED显示模块。
三、实验原理译码器是输入数码和输出数码之间的对应关系,也就是说,“输入码和输出码之间的对应表”这应该算是设计译码器的必须条件。
译码器常用来做码和码之间的转换器,也常被用于地址总线或用作电路的控制线。
例如下面为常见的3×8译码器的真值表:A0 A1 A2000001010011100101110111Y0Y1Y2Y3Y4Y5Y6Y710000010000010000001000010000001000001000001实验中可根据需要,为3×8译码器加入使能控制脚。
一般的分频器可获得的分频频率种类分布不均匀,积分分频,能比较好的解决这个问题。
1、分频结果=来源频率×N/(2ⁿ-1)2、频率波形不均匀。
四、实验内容及步骤本实验内容是完成38译码器和分频器的设计,然后将3×8译码器的结果在实验箱上实现,分频器则能正确仿真、显示,实验步骤如下:1、编写3×8译码器的VHDL代码。
2、用Quartus II对其进行编译仿真。
3、在仿真确定无误后,选择芯片ACEX1K EP1K30QC208。
4、给芯片进行管脚绑定,在此进行编译。
5、根据自己绑定的管脚,在实验箱上对键盘接口、显示接口和FPGA之间进行正确连线。
6、给目标板下载代码,在开关输入键值,观看实验结果。
vhdl实验报告
专用集成电路实验报告13050Z011305024237X德文实验一开发平台软件安装与认知实验实验内容1、本实验以三线八线译码器(LS74138)为例,在Xilinx ISE 9.2软件平台上完成设计电路的VHDL文本输入、语法检查、编译、仿真、管脚分配和编程下载等操作。
下载芯片选择Xilinx公司的CoolRunner II系列XC2C256-7PQ208作为目标仿真芯片。
2、用1中所设计的的三线八线译码器(LS74138)生成一个LS74138元件,在Xilinx ISE 9.2软件原理图设计平台上完成LS74138元件的调用,用原理图的方法设计三线八线译码器(LS74138),实现编译,仿真,管脚分配和编程下载等操作。
源程序:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;-- Unment the following lines to use the declarations that are-- provided for instantiating Xilinx primitive ponents.--library UNISIM;--use UNISIM.Vponents.all;entity ls74138 isPort ( g1 : in std_logic;g2 : in std_logic;inp : in std_logic_vector(2 downto 0);y : out std_logic_vector(7 downto 0));end ls74138;architecture Behavioral of ls74138 isbeginprocess(g1,g2,inp)beginif((g1 and g2)='1') thencase inp iswhen "000"=>y<="00000001";when "001"=>y<="00000010";when "010"=>y<="00000100";when "011"=>y<="00001000";when "100"=>y<="00010000";when "101"=>y<="00100000";when "110"=>y<="01000000";when "111"=>y<="10000000";when others=>y<="00000000";end case;elsey<="00000000";end if;end process;end Behavioral;波形文件:生成元器件及连接电路思考:有程序可以看出,定义了三个输入端,一个输出端。
《FPGA系统设计》实验报告》时序逻辑电路的设计
《FPGA系统设计》实验报告》时序逻辑电路的设计
一、设计任务
分别设计并实现锁存器、触发器的VHDL模型。
二、设计过程
1、同步锁存器:
同步锁存器是指复位和加载功能全部与时钟同步,复位端的优先级较高。
下图为同步锁存器的VHDL程序及模型:
2、异步锁存器:
异步锁存器,是指复位与时钟不同步的锁存器。
下图为同步锁存器的VHDL程序及模型:
3、D触发器:
D触发器是最常用的触发器。
下图为简单D触发器的VHDL 模型:
4、T触发器:
T触发器的特点是在时钟沿处输出信号发生翻转。
按
照有无复位、置位信号以及使能信号等,T触发器也有多种类型。
下图为带异步复位T触发器的VHDL模型:
5、JK触发器:
JK触发器中,J、K信号分别扮演置位、复位信号的角色。
为了更清晰的表示出JK触发器的工作过程,以下给出JK触发器的真值表(如表1所示)。
表1 JK触发器真值表
按照有无复位、置位信号,常见的JK触发器也有多种类型,下图带异步复位(clr)、置位(prn)的JK触发器的VHDL模型:
三.总结
本次实验中较为顺利,在第一次课的时间内我就已经完成了必做实验与选作实验。
在实验的过程中,在防抖电路处有了较大的困难。
由于仿真中不存在此问题,在实际操作中参数选择时遇到了一定的困难。
在反复比对效果之后,我
确定了电路的参数,实现了防抖功能。
通过这次实验,我对时钟脉冲、计数器等有了更加深入的认识与理解。
eda技术实用教程-veriloghdl答案
eda技术实用教程-veriloghdl答案【篇一:eda技术与vhdl程序开发基础教程课后答案】eda的英文全称是electronic design automation2.eda系统设计自动化eda阶段三个发展阶段3. eda技术的应用可概括为4.目前比较流行的主流厂家的eda软件有、5.常用的设计输入方式有原理图输入、文本输入、状态机输入6.常用的硬件描述语言有7.逻辑综合后生成的网表文件为 edif8.布局布线主要完成9.10.常用的第三方eda工具软件有synplify/synplify pro、leonardo spectrum1.8.2选择1.eda技术发展历程的正确描述为(a)a cad-cae-edab eda-cad-caec eda-cae-cadd cae-cad-eda2.altera的第四代eda集成开发环境为(c)a modelsimb mux+plus iic quartus iid ise3.下列eda工具中,支持状态图输入方式的是(b)a quartus iib isec ispdesignexpertd syplify pro4.下列几种仿真中考虑了物理模型参数的仿真是(a)a 时序仿真b 功能仿真c 行为仿真d 逻辑仿真5.下列描述eda工程设计流程正确的是(c)a输入-综合-布线-下载-仿真b布线-仿真-下载-输入-综合c输入-综合-布线-仿真-下载d输入-仿真-综合-布线-下载6.下列编程语言中不属于硬件描述语言的是(d)a vhdlb verilogc abeld php1.8.3问答1.结合本章学习的知识,简述什么是eda技术?谈谈自己对eda技术的认识?答:eda(electronic design automation)工程是现代电子信息工程领域中一门发展迅速的新技术。
2.简要介绍eda技术的发展历程?答:现代eda技术是20世纪90年代初从计算机辅助设计、辅助制造和辅助测试等工程概念发展而来的。
时序电路VHDL讲解
前几节,我们讲解的都是组合逻辑电路。
通过这些组合逻辑电路,我们初步掌握了VHDL常用的语法结构。
从这节开始,我们要介绍时序电路了。
(其实我们没有刻意去分组合和时序,只是觉的前面组合讲的多点,后面可能会多讲些时序电路而已。
对小平爷爷曾经说过:不管黑猫,白猫,只要能捉到老鼠的猫就是好猫。
所以不论时序,组合,还是时序和组合的混合体,只要能实现功能的就是好程序!)说一下概念:异步和同步。
这是时序电路的两大类。
同步就是电路的触发器由同一个时钟信号驱动,在同一个时刻翻转;而异步就是不在同一个时刻翻转。
大多数编程器的的内部结构是同步时序逻辑电路。
我们以时序电路的基础单元D触发器说起。
上升沿D触发器逻辑符号:由功能表可知,一个D触发器有一个异步置零端Rd,异步置1端Sd,只要Rd或Sd有效(低电平),则D触发器就会立即复位或则置1操作,复位与置1操作是与是时钟无关的,是异步的,有一个输入端D,一个时钟输入端CP,有两个互补的输出端Q和Q源代码:(工程见example中的D_FF文件夹)逐行解释:19~33:是一个有嵌套的IF结构。
这个IF结构就是按照功能表的顺序来写的。
25:是一条功能表没有的语句,在这种情况下,信号输出不确定,即用’X’来表示。
这儿要考虑到选择信号的完备性:Rd和Sd的组合会形成4种可能,若没有第25句的话,那么28~32可在Rd=’0’且Sd=’0’和Rd=’1’且Sd=’1’两种情况下运行。
这个是不符合功能要求的。
这里提醒大家一句:编写程序,不仅仅是VHDL程序,心一定要细。
29:用到了一个内置函数rising_edge(),即表示信号的上升沿,相对的就是falling_edge()。
该句等同于(if CP’event and CP=’1’),意思是CP上有事件发生,且事件发生后CP是高电平。
(事件无非就是上升和下降,若事件后是高电平,那就是上升沿发生了!)这两个函数在以后会经常用到的。
注意:因为是Sd,Rd是异步信号,即该信号不等待时钟的某一状态,而是直接起作用。
2020年(OA自动化)电子设计自动化(eda)实验指导书
(OA自动化)电子设计自动化(eda)实验指导书电子设计自动化(EDA)实验指导书前言近些年来,电子设计自动化(EDA)技术发展迅速。
一方面,各种大容量、高性能、低功耗的可编程逻辑器件不断推出,使得专用集成电路(ASIC)的生产商感受到空前的竞争压力。
另一方面,出现了许多EDA设计辅助工具,这些工具大大提高了新型集成电路的设计效率,使更低成本、更短周期的复杂数字系统开发成为可能。
于是一场ASIC与FPGA/CPLD之争在所难免。
然而PLD器件具有先天的竞争优势,那就是可以反复编程,在线调试。
EDA技术正是这场较量的推动引擎之一。
一般来说,EDA技术就是以计算机为平台,以EDA软件工具为开发环境,以HDL为设计语言,以可编程器件为载体,以ASIC、SOC芯片为目标器件,以电子系统设计为应用方向的电子产品自动化设计过程。
设计者只需编写硬件描述语言代码,然后选择目标器件,在集成开发环境里进行编译,仿真,综合,最后在线下载调试。
整个过程,大部分工作由EDA软件完成。
全球许多著名的可编程器件提供商都推出了自己的集成开发工具软件,如Altera公司的MAX+PLUSⅡ、QuartusⅡ软件;Xilinx公司的Foundation、ISE软件,Lattice公司的ispExpert软件,Actel 公司的Libero软件等。
这些软件的推出,极大地促进了集算法设计、芯片编程、电路板设计于一体的EDA技术的发展。
另外,在以SOC 芯片为目标器件的电子系统设计要求下,可编程器件的内部开始集成高速的处理器硬核、处理器软核、DSP模块、大量的存储资源、高速的串行收发模块、系统时钟管理器、多标准的I/O接口模块,亦使得设计者更加得心应手,新一轮的数字革命由此引发。
EDA技术是一门实践性很强的学科,要培养出具有竞争力的一流IC设计人才,动手能力是关键。
只有通过理论学习,加上现场实验,在使用软件编程加硬件调试的过程中真正获得锻炼,增长技能。
时序逻辑电路实验报告
一、实验目的1. 理解时序逻辑电路的工作原理和基本结构;2. 掌握触发器、计数器等时序逻辑电路的设计方法;3. 熟悉Multisim软件在时序逻辑电路设计与仿真中的应用;4. 培养实际操作能力和分析问题、解决问题的能力。
二、实验原理时序逻辑电路是一种在时钟信号控制下,输出不仅与当前输入有关,还与电路历史状态有关的数字电路。
其基本结构包括触发器、计数器等。
触发器是时序逻辑电路的基本单元,用于存储一位二进制信息。
计数器是时序逻辑电路的一种应用,用于对输入脉冲进行计数。
三、实验内容1. 触发器实验(1)实验目的:熟悉触发器的工作原理和功能,掌握触发器的使用方法。
(2)实验内容:设计一个JK触发器,实现时钟信号控制下的同步置1、同步置0、计数等功能。
(3)实验步骤:① 使用Multisim软件,搭建JK触发器电路;② 搭建计数器电路,实现时钟信号控制下的计数功能;③ 设置输入信号,观察触发器和计数器的输出波形,验证功能。
2. 计数器实验(1)实验目的:掌握计数器的设计方法,熟悉不同计数器电路的功能。
(2)实验内容:设计一个模为24的二进制计数器和模为60的十进制计数器。
(3)实验步骤:① 使用Multisim软件,搭建二进制计数器电路;② 设置输入信号,观察计数器的输出波形,验证功能;③ 使用Multisim软件,搭建十进制计数器电路;④ 设置输入信号,观察计数器的输出波形,验证功能。
四、实验结果与分析1. 触发器实验实验结果显示,设计的JK触发器能够实现同步置1、同步置0、计数等功能。
在计数过程中,触发器的输出波形符合预期,验证了JK触发器的功能。
2. 计数器实验实验结果显示,设计的模为24的二进制计数器和模为60的十进制计数器均能实现预期的计数功能。
在计数过程中,计数器的输出波形符合预期,验证了计数器电路的功能。
五、实验总结本次实验通过设计、搭建和仿真时序逻辑电路,掌握了触发器、计数器等时序逻辑电路的设计方法,熟悉了Multisim软件在时序逻辑电路设计与仿真中的应用。
vhdl实验
目录第一部分实验思路 (2)第二部分问题和解决方案 (3)第三部分技术的认识 (3)第四部分课程的建议 (4)第五部分程序源代码 (4)--实验二(8位可逆计数器) (4)--实验三(任意整数分频电路设计) (6)--实验四(多功能循环彩灯控制电路设计) (7)--实验五(8段数码管动态扫描显示控制) (9)--实验六(频率计设计) (13)--实验七(矩阵式键盘扫描与键码检测) (17)--实验八(LPM的使用) (20)--实验九(多功能电子钟设计) (20)--实验十(SPI总线时序模拟) (29)第一部分实验思路1.1实验二(8位可逆计数器)分两个进程,一个记录手动脉冲个数,另一个记录脉冲源脉冲个数,最后以方式选择开关决定显示哪个个数。
1.2实验三(任意整数分频电路设计)分两个进程,一个记录上升沿个数,另一个纪录下降沿个数,当计数总和等于预分频数时,两个进程的标识位取反,最后将两个标识位的异或送给输出。
1.3实验四(多功能循环彩灯控制电路设计)确定四种循环方式,分别为1、3、5、7,2、4、6、8,7、5、3、1,8、6、4、2。
用case,when语句,同时计数自动加一。
1.4实验五(8段数码管动态扫描显示控制)设置一个顶层文件,三个模块文件(分频模块,计数模块,显示模块)。
分频是将20Mhz分成周期为1/100s和100us的方波。
计数是记录有多少个1/100s。
显示是以100us为步调扫描数码管以显示计数。
1.5实验六(频率计设计)设置一个顶层文件,三个模块文件(分频模块,计数模块,显示模块)。
分频是将20Mhz分成周期为1s和1ms的方波。
计数是记录在1s内待测脉冲的周期数。
显示是以1ms为步调扫描数码管以显示计数。
1.6实验七(矩阵式键盘扫描与键码检测)设立四个进程,一个完成由20Mhz到周期为10ms,100us的转换(10ms用于扫描键盘,100us 用于扫描数码管以显示键码)。
基于VHDL的时序逻辑电路设计 ppt课件
PPT课件 8
下载器第一次连接到PC机,会弹出硬件安装向导, 按下述操作完成下载器安装
PPT课件 9
PC机→配套下载器→P实PT课验件 背板 连接OK示意图
10
PPT课件
左侧孔:
Hole1-Hole17;
形对应引脚上(适用于引脚数量较少的目标器件)
PPT课件 12
在QuartusII下对设计进行引脚锁定续
双击“Location”下方的表格框,弹出指定 器件的引脚列表,选择用户自定义的引脚。
PPT课件 13
现在将流水灯的8个输出端所需引脚锁定到实验背板对应 的8个发光Led上。
1、8个发光Led与可编程逻辑器件芯片的对应关系:
逻辑单元(LE)240个,等效宏单元192个,最大 用户I/O 80个;
背板上共引出15(左侧)+18(右侧)+22(上方) =55个I/O供用户外接使用,其余I/O提供给背板上自 带的功能电路(LED、按键、VGA接口、拨码开关 等);
背板由下载器通过电缆直接供电,无需从实验箱外 接电源线;
PLD主芯片
背面视图
PPT课件 7
二、背板连接说明
1、第一次使用时:先将背板按针脚对应插入实验箱 背板接口区的插孔内,然后按下锁紧插座的锁紧拉 杆。 (注意插入时不要错位) ;
2、连通PC机→配套下载器→实验背板;
下载器与PC机通过USB打印线连接(一头方|一头扁); 下载器与实验背板通过9针平行串口线连接; 线路较长,请适当缠绕,折放整齐。
实验八、基于VHDL的时 序逻辑电路设计
本部分实验内容为新内容,操作步骤较多,为保证实 验项目进行完毕,请同学们务必提前做好预习准备
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四基本时序逻辑电路的VHDL模型
一、实验目的
1掌握简单的VHDL程序设计。
2 掌握VHDL语言对基本时序逻辑电路的建模。
二、实验内容
分别设计并实现锁存器、触发器的VHDL模型。
(一)寄存(锁存)器
1 实验原理
寄存器用于寄存一组二值代码,广泛用于各类数字系统。
因为一个触发器能储存1位二值代码,所以用N个触发器组成的寄存器能储存一组N位的二值代码。
2 实验内容:
实现同步锁存器(同步锁存器指复位和加载功能全部与时钟同步,复位端的优先级最高。
在数字系统设计时,采用完全同步的锁存器,可以避免时序错误。
)
附:一个8位寄存器的VHDL描述。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY REG IS
PORT(D:IN STD_LOGIC_VECTOR(0 TO 7); CLK:IN STD_LOGIC;
Q:OUT STD_LOGIC_VECTOR(0 TO 7));
END REG;
ARCHITECTURE ART OF REG IS
BEGIN
PROCESS(CLK)
BEGIN
IF(CLK'EVENT AND CLK=‘1’)THEN
Q<=D;
END IF;
END PROCESS;
END ART;
(二)触发器
实验内容:
1、D触发器
1)、带异步置位的D触发器(当时钟信号或置位信号有跳变时激活进程。
如果置位信号有效(高电平),D触发器被置位,输出信号高电平,如果置位
信号无效,此时时钟信号出现上升沿,D触发器输出信号变为输入信号);
2)、带异步复位和置位的D触发器(当时钟信号、复位信号或置位信号有跳变时激活进程。
如果复位信号有效(高电平),D触发器被复位,输出信号低电平;如果复位信号无效置,而置位信号有效(高电平),D触发器被置位,输出信号高电平,如果复位信号和置位信号都无效,此时时钟信号出现上升沿,D触发器输出信号变为输入信号)。
附:最简单的D触发器,没有复位和职位信号。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY DCFQ IS
PORT(D,CLK:IN STD_LOGIC;
Q:OUT STD_LOGIC);
END DCFQ;
ARCHITECTURE ART OF DCFQ IS
BEGIN
PROCESS(CLK)
BEGIN
IF (CLK'EVENT AND CLK=‘1’)THEN -- 时钟上升沿触发
Q<=D;
END IF;
END PROCESS;
END ART;
上述触发器为最简单的D触发器,没有复位和职位信号。
根据上例写一个
2、JK触发器
从真值表可以看出,PRN=0 时,触发器置数,Q=’1’;CLRN=0 时,触发器清零,Q=’0’;当
PRN=CLRN=J=K=’1’时,在CLK 上升沿的时候,触发器翻转。
3)RS触发器
四、实验报告
1、简要说明实验步骤。
2、写出实验用的VHDL源程序。
3、记录仿真结果(波形),说明输出延时情况。
4、记录实验结果,并分析其结果的正确性。
5、说明实验中遇到的问题及解决方法,写出实验心得体会。
实验心得体会
做完EDA实验,我感到受益匪浅。
这不仅使我了解了EDA的实验系统,学习了MAX+PLUSⅡ软件的使用,掌握了基本的电路设计流程、方法以及技巧,更增强了我对EDA设计的兴趣。
在实验的过程中,老师又结合实际详细的教了我们VHDL语言的基本指令及编程方法,教我们熟悉了在PC机上运用MAX+PLUSⅡ软件和EPLD进行电路设计的设计和仿真过程。