实验四 实验4 VHDL语言进行简单时序电路——一 JK触发器的设计
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。
时序逻辑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语言组合电路设计
实验四:VHDL语言的组合电路设计一、实验目的学习用VHDL语言设计组合电路的方法、熟悉总线数据输入方式。
二、实验内容编程实现一个优先编码、译码及显示的电路。
三、实验条件(1)电脑。
(2)开发软件:Quartus II(3)开发设备:EL —EDA—V型;EDA实验开发系统。
(4)拟用芯片:ACEX1K;EP1K100QC208-3。
四、实验要求1、用VHDL设计10线——4线优先编码器模块。
2、用VHDL设计BCD码——7段译码器模块。
3、用VHDL完成编码、译码及显示的描述。
4、对设计结果进行仿真、下载及硬件测试。
五、实验设计(1)10线—4线优先编码器模块(2)7段译码器模块Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_unsigned.all;ENTITY display ISPort(clkdsp: in std_logic;D0,D1,D2,D3,D4,D5,D6,D7:IN STD_LOGIC_VECTOR(3 DOWNTO 0);SEL: out std_logic_vector(2 downto 0);Led7s: OUT std_logic_vector(6 downto 0));END ENTITY display;Architecture one of display isSignal cnt8: std_logic_vector(2 downto 0);Signal y: std_logic_vector(3 downto 0);BeginP1:Process(clkdsp) --8进制计数器BeginIf clkdsp' event AND CLKDSP='1' thenCnt8<=cnt8+1;End if;SEL<=cnt8;End process P1;P2:PROCESS(cnt8,D0,D1,D2,D3,D4,D5,D6,D7) --8选1数据选择器BEGINCASE cnt8 ISWHEN "000"=> Y<= D0;WHEN "001"=> Y<= D1;WHEN "010"=> Y<= D2;WHEN "011"=> Y<= D3;WHEN "100"=> Y<= D4;WHEN "101"=> Y<= D5;WHEN "110"=> Y<= D6;WHEN "111"=> Y<= D7;WHEN OTHERS=>NULL;END CASE;END PROCESS P2;P3:PROCESS(y) --显示译码器BEGINCASE y(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 "1111"=>LED7S<="1000000";WHEN OTHERS=>NULL;END CASE;END PROCESS P3;END one;3)编码、译码及显示模块的VHDL程序LIBRARY IEEE;USE IEEE.std_logic_1164.all;ENTITY ENCODER_DEC7S ISPORT(I:IN BIT_VECTOR(9 DOWNTO 0);LED7S:OUT BIT_VECTOR (6 DOWNTO 0));END ENCODER_DEC7S;ARCHITECTURE one OF ENCODER_DEC7S IS SIGNAL Y:STD_LOGIC_VECTOR(3DOWNTO 0); BEGINP1:PROCESS(I)BEGINIF(i(9)='0')THEN y<="1001";ELSIF(i(8)='0')THEN y<="1000";ELSIF(i(7)='0')THEN y<="0111";ELSIF(i(6)='0')THEN y<="0110";ELSIF(i(5)='0')THEN y<="0101";ELSIF(i(4)='0')THEN y<="0100";ELSIF(i(3)='0')THEN y<="0011";ELSIF(i(2)='0')THEN y<="0010";ELSIF(i(1)='0')THEN y<="0001";ELSIF(i(0)='0')THEN y<="0000";ELSE y<="0000";END IF;END PROCESS P1;P2:PROCESS(Y)BEGINCASE Y 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 P2;END one;4)仿真波形5)管脚锁定电路引脚 CLKCLR EN UP ...... LED7 CO EP1K100QC208-3芯片Pin78 Pin7 Pin8 Pin90 ...... Pin97 Pin36 EDA 实验开发系统 CLK5 d0 d1 a ...... g LED0五、实验结果及总结1)系统仿真情况从系统仿真结果可以看出,本系统完全符合设计要求。
时序逻辑电路的Verilog_HDL实现实验报告
时序逻辑电路的Verilog HDL 实现一.实验要求(1):编写JK 触发器、8位数据锁存器、数据寄存器的Verilog HDL 程序,并实现其仿真及其测试程序;(2):在实验箱上设计含异步清零和同步使能的计数器。
(3):进行波形仿真测试后;画出仿真波形。
(4):写出实验心得二.实验内容:(1)1.JK 触发器的元件符号如图7.14所示,其中J 、K 是数据输入端,CLR 是复位控制输入端,当CLR=0时,触发器的状态被置为0态;CLK 是时钟输入端;Q 和QN 是触发器的两个互补输出端。
JK 触发器的状态方程为Q n+1 =J Q n +K Q nJK 触发器的verilog HDL 程序module jkff_rs(clk,j,k,q,rs,set); input clk,j,k,set,rs;output reg q;always@(posedge clk,negedge rs,negedge set)begin if(!rs) q<=1'b0;else if(!set) q<=1'b1;else case({j,k})2'b00:q<=q;2'b01:q<=1'b0;2'b10:q<=1'b1;2'b11:q<=~q;default:q<=1'bx;endcaseendendmoduleJK 触发器的功能:带异步清0,异步置1(低电平有效)JK 触发器的仿真结果JK 触发器的元件符号2.8位数据锁存器锁存器元件符号如图所示。
CLR是复位控制输入端,当CLR=0时,8位数据输出Q[7..0]=00000000。
ENA是使能控制输入端,当ENA=1时,锁存器处于工作状态,输出Q[7..0]=D[7..0];ENA=0时,锁存器的状态保持不变。
OE是三态输出控制端,当OE=1时,输出为高阻态;OE=0时,锁存器为正常输出状态。
时序电路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硬件描述语言》课程教学大纲
《VHDL硬件描述语言》课程教学大纲课程代码:ABJD0414课程中文名称: VHDL硬件描述语言课程英文名称:Very-High-Speed Integrated Circuit HardwareDescription Language课程性质:必修课程学分数:2学分课程学时数:32学时授课对象:自动化专业本课程的前导课程:电路,模拟电子,C语言程序设计一、课程简介本课程是电类专业的专业基础课,要求学生通过本课程的学习和实验,初步掌握常用EDA工具的使用方法、FPGA的开发技术以及VHDL语言的编程方法。
能比较熟练地使用QuartusII等常用EDA软件对FPGA和CPLD作一些简单电路系统的设计,同时能较好地使用VHDL语言设计简单的逻辑电路和逻辑系统,学会行为仿真、时序仿真和硬件测试技术,为现代EDA工程技术的进一步学习,ASIC器件设计以及超大规模集成电路设计奠定基础。
作为一门专业基础课,除了为现代电子线路课程,软件无线电课程奠定理论和实践方面的基础外,还是其他一些课程的先修课,如微电子导论、现代ASIC设计、硬件描述语言仿真/综合器设计、大规模集成电路设计等。
二、教学基本内容和要求(一)概论介绍现代EDA技术,VHDL概况,介绍自顶向下的系统设计方法以及FPGA和CPLD的基本技术,要求对现代EDA技术及实现工具的使用方法和发展情况有一初步了解。
重点与难点:EDA技术的设计工具(二)EDA设计流程及工具首先介绍基于EDA软件的FPGA/CPLD开发流程和ASIC设计流程,然后分别介绍与这些设计流程中各环节密切相关的EDA工具软件,最后简述QuartusII的基本情况和IP。
重点与难点:EDA仿真设计流程。
(三)FPGA/CPLD结构与应用主要介绍几类常用的大规模可编程逻辑器件的结构和工作原理。
对CPLD的乘积项原理和FPGA的查找表原理分别进行剖析。
最后介绍相关的编程下载和测试技术。
重点与难点:FPGA/CPLD的工作作原理及编程技术。
用VHDL语言和原理图设计方法混合设计一个简易时钟电路
用VHDL语言和原理图设计方法混合设计一个简易时钟电路一、实验目的1.通过实验复习可编程逻辑器件开发软件的图形设计操作流程;2.掌握用硬件描述语言的方法设计组合逻辑电路——BCD-七段显示译码器;3. 掌握简单时钟电路的设计方法;3. 学习掌握自底向上的设计方法。
二、实验器材1、台式计算机 1台2、可编程逻辑逻辑器件实验软件1套3、下载电缆一套4、示波器一台三、实验说明1、台式计算机用于向可编程逻辑逻辑器件实验软件提供编程、仿真、下载的平台,供用户使用。
2、可编程逻辑逻辑器件实验软件向原理图的设计和硬件描述语言的编程提供平台,并将调试好的程序下载到可编程逻辑逻辑器件中。
3、下载电缆是可编程逻辑器件软件和可编程逻辑逻辑器件之间的接口电缆,为了便于区别,用不同颜色导线区分下载电缆的电源、地和信号,一般用红色导线接电源,用黑色导线接地。
4、示波器用于观察可编程逻辑逻辑器件执行程序时输出信号的变化四、实验原理时钟电路主要包括计秒,计分,以及计时,晶振可以产生一个一定频率的时钟信号,我们通过分频可以很容易的得到一个1Hz的时钟信号,这样就可以计秒,在计够60秒后计一分,计完60分后计一小时,这就是一个基本的时钟的大致设计方法。
在本次实验中,考虑到实际条件限制,只有计秒和计分两个部分。
在计秒操作中可以通过设计一个十进制计数器和一个六进制计数器来计秒,计分也是通过一个十进制计数器和一个六进制计数器来实现。
一个基本的时钟电路是需要每一位同时都能够显示的,但是在数码管设计中都是采用位选来给某一位送数,这就需要一个频率高于人眼分辨能力的位选方式来实现。
五、实验内容和步骤1、新建一个名为clock的工程文件,如图5-1所示图5-12、新建一个VHDL文件命名为div,设计一个分频器来实现1Hz信号的产生,生成的电路模块如图5-1所示clr clk qdivinst图5-1 50MHz分频产生1Hz脉冲信号代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity div isport (clr,clk: in std_logic;q: out std_logic);end div ;architecture a of div isSIGNAL fre_N : integer range 0 to 25000000;SIGNAL clk_tmp: std_logic;BEGINq <= clk_tmp;process(clk,clr)beginif clr = '0' thenfre_N <= 0;elsif falling_edge(clk) thenif fre_N >= 24999999 thenfre_N <= 0;clk_tmp <= not clk_tmp;elsefre_N <= fre_N + 1;end if;end if;end process;end a;3、新建两个VHDL文件分别命名为counter10和counter6,分别设计一个十进制计数器和六进制计数器,计秒和计分通过十进制和六进制的模块产生,生成的电路模块如图5-2所示图5-2十进制计数器代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count10 isport (clr,start,clk: in std_logic;cout:out std_logic;daout: out std_logic_vector(3 downto 0) );end count10;architecture a of count10 issignal cnt: std_logic_vector(3 downto 0); begindaout<= cnt;process(clk,clr)beginif(clr='0')thencnt<="0000";cout<= '0';elsif(CLK'event and CLK='1')thenif(start='1') thenif(cnt="1001") thencnt<="0000";cout<= '1';elsecnt<=cnt+1;cout<= '0';end if;elsecnt<=cnt;cout<= '0';end if;end if;end process;end a;六进制计数器代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count6 isport (clr,start,clk: in std_logic;cout: out std_logic;daout: out std_logic_vector(3 downto 0)); end count6;architecture a of count6 issignal cnt: std_logic_vector(3 downto 0); begindaout<= cnt;process(clk)beginif(clr=’0’)thencnt<=”0000”;cout<= ‘0’;elsif(CLK’event and CLK=’1’)thenif(start=’1’) thenif(cnt=”0101”) thencnt<=”0000”;cout<= ‘1’;elsecnt<=cnt+1;cout<= ‘0’;end if;elsecnt<=cnt;cout<= ‘0’;end if;end if;end process;end a;4、新建一个VHDL文件命名为seltime,满足计秒和计分的四位数的一个选择电路,来将某一位送到对应的数码管,这样这个模块就具有了位选和送数的功能。
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 语言编程语法、设计思路和熟练掌握Quartus II 开发软件的目的。
二、实验内容:该数字时钟的显示格式如下所示: HH: MM: SS, 其中HH表示时计数的两位, MM表示分计数的两位, SS表示秒计数的两位。
本系统输入信号分别为复位信号rst(高有效)、sel(两位信号, 分别可以选择2分频、4分频8分频和16分频)、clk_in(时钟信号)、8位时输出、8位分输出、8位秒输出(其中高4为表示对应的高半字节、低4位表示的低半字节, 譬如当时间为08:59:30时, 时输出为”0000_1000”,分输出为”0101_1001”,秒输出为”0011_0000”)。
该时钟系统可以通过Sel信号时钟运行的快慢。
三、实验流程:通过对实验内容的分析: 可以考虑时钟系统的可由三部分组成: 1.分频器:分频器为时序电路并且通过《数字电路》理论课程的学习可知由计数器来实现, 同学可以回想一下实验1中是如何实现计数器电路的设计), 该模块主要产生2.4.8、16分频的时钟信号;2.多路选择器:在VHDL中多路选择器为组合逻辑, 可以有多种实现方法, 在这里主要选用了case语句来实现。
该模块的作用是从分频器中根据Sel信号选择适当的时钟信号;3.时钟控制器:该模块比较复杂, 主要实现功能是实现一个24小时的计时。
当时间为00:00:59的时候下一个时钟到来时状态的跳变为00:01:00, 计时中多数计数为加1操作, 有几个特殊状态需要重点考虑:当时间产生分进数时, 譬如上例。
当时间产生时进数时, 譬如00:01:59时刻的下一个状态为00:02:00;当时间产生时进数时, 譬如00:59:59是个的下一个状态为01:00:00。
当时间产生天进数时, 譬如23:59:59的下一个状态为00:00:00。
四、仿真要求:1、本次试验的结果全部采用功能仿真分析:在结果图中能够看到让复位信号rst为有效的情况下, 所有的输出为00:00:00;2.当频率选择输出分别为”00”、”01”、”10”、”11”时秒为的进数分别包含2.4.8、16倍clk_in的时钟周期;3.可以看到完整的计时周期00:00:00->23:59:59->00:00:00。
VHDL实验报告JK触发器、同步计数器
Verilog HDL实验报告Verilog 实验报告题目:JK触发器、同步计数器系部名称:通信工程专业名称:通信工程班级:班内序号:学生姓名:时间:2010.11.28一、实验内容:用JK触发器构成同步计数器:设计一个同步计数器,其逻辑图和JK触发器的逻辑图所示。
清零信号clear低电平有效,输入数据在时钟信号clock的上升沿被锁存,触发器在clock的下降沿输出,当count_enable信号为低电平时停止计数。
写出同步计数器的verilog描述和激励模块,在激励模块中使用clear和count_enable对计数器进行测试,并显示输出计数Q[3:0]。
二、实验原理图:JK触发器构成同步计数器源代码://主模块module synchronous_counter(clear,clock,count_enable,Q);input clear,clock,count_enable;output [3:0] Q;wire qbar1,qbar2,qbar3,qbar0;wire a,b,c;assign a = Q[0] & count_enable;assign b = a & Q[1];assign c = b & Q[2];JK_flip_flop myJK(count_enable,count_enable,clock,clear,Q[0],qbar0);JK_flip_flop myJK1(a,a,clock,clear,Q[1],qbar1);JK_flip_flop myJK2(b,b,clock,clear,Q[2],qbar2);JK_flip_flop myJK3(c,c,clock,clear,Q[3],qbar3);endmodule//调用的JK触发器模块module JK_flip_flop(j,k,clock,clear,q,qbar);input j,k,clock,clear;output q,qbar;wire a,b,y,ybar,c,cbar,d,q,qbar;assign a = ~ (((qbar & j)& clock) & clear);assign b = ~ ((clock & k) & q);assign y = ~ (a & ybar);assign ybar = ~ ((y & clear) & b);assign c = ~(y & cbar);assign cbar = ~ clock;assign d = ~ (cbar & ybar);assign q = ~ (c & qbar);assign qbar = ~ ((q & clear) & d);endmodule测试文件源代码:module count_test;reg count_enable=1,clock=0,clear=0;wire [3:0]Q;synchronous_counter myCount(clear,clock,count_enable,Q);initial #10 clear=1;always@(negedge clock)begin$monitor($time," clear=%b,count_enable=%b,Q=%b%b%b%b\n",clear,count_enable,Q[3],Q[2],Q[1],Q[0]);endalways clock = #5 ~clock;always count_enable= #170 ~count_enable; endmodule实验结果:波形图:三、实验心得:这次实验比上一次顺利多了,可能是因为有了前一次的铺垫,我对软件的熟悉度有了一定的提高。
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四、考核及成绩评定(一)命题原则与思想综合考核所学知识、各章节的知识点、要求掌握的基本知识和基本原理,试题难易适中,学习成绩具有一定的区分度。
FPGA程序设计实验报告 JK触发器
FPGA程序设计实验报告——JK触发器一.实验目的JK触发器是一种基础电子元件,这个程序用Quartus模拟JK触发器的功能,具有异步信号清零或置1功能,同时在JK触发器程序基础上进行修改,使其具有对输出q的显示功能,在q取1时显示1,在q取0时显示0。
这里使用的是上升沿触发式JK触发器。
二.程序代码module JK(clk,j,k,q,r,s,seg);input clk,j,k,r,s;output q;output [7:0]seg;reg q=0;reg [7:0]seg;always @(posedge clk)beginif(r==1 && s==0)begin q<=0;endif(r==0 && s==1)begin q<=1;endif(r==0 && s==0)beginif(j==1 && k==1)begin q<=~q;endif(j==1 && k==0)begin q<=1;endif(j==0 && k==0)begin q<=q;endif(j==0 && k==1)begin q<=0;endendendalways @(q)beginif(q==0)begin seg<=8'b0011_1111;endif(q==1)begin seg<=8'b0000_0110;endendendmodule三.仿真结果对程序进行编译仿真之后,得到以下结果:仿真结果说明:对于上升沿式JK触发器,仅在上升沿到来是触发改变q的取值。
r和s是两个异步信号输入端,在r取1,s取0时,无论j,k输入端如何,q始终取0。
在r取0,s取1时,无论j,k输入端如何,q始终取1。
在r和s都取0时,触发器正常工作,其q值取决于上升沿到来时的j,k以及之前一个周期的q值。
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。
JK触发器集成电路设计Cadence软件模拟仿真
专业综合技能训练报告——JK触发器的设计学院:机械与电子工程学院专业:电子科学与技术班级:080631姓名:***学号:********指导老师:蔡志民老师一、实验目的:1、熟悉UNIX的概念与基本操作;2、掌握Cadence软件的基本操作;3、了解Schematic设计环境4、掌握原理图的设计方法5、熟悉前仿真参数设置和仿真步骤6、学会验证仿真结果二、实验原理1、JK触发器的构造及功能:触发器是一个具有记忆功能的二进制信息存储器件,是构成多种时序电路的最基本逻辑单元。
本次是用MOS器件设计一个JK触发器,通过JK 触发器的功能设计电路图,再转换为MOS 器件的电路。
触发器是一个具有记忆功能的二进制信息存储器件,是构成多种时序电路的最基本逻辑单元。
触发器具有两个稳定状态,即"0"和"1",在一定的外界信号作用下,可以从一个稳定状态翻转到另一个稳定状态。
由于采用的电路结构形式不同,触发信号的触发方式也不一样。
根据触发方式触发器可分为电平触发、脉冲触发和边沿触发。
电平触发方式结构简单、触发速度快。
在时钟信号有效电平期间(CLK=1 或CLK=0),触发器总是处于可翻转状态,输入信号的变化都会引起触发器状态的变化。
在时钟信号无效电平期间,触发器状态保持不变。
因此,在时钟信号有效电平宽度较宽时,触发器会连续不停地翻转。
如果要求每来一个CLK 脉冲触发器仅翻转一次的话,则对时钟脉的有效电平的宽度要求极为苛刻,所以实际中应用并不广泛。
边沿触发方式的特点是:触发器只在时钟跳转时刻发生翻转,而在C=1 或C=0 期间,输入端的任何变化都不影响输出。
主从型JK 触发器:由主从型JK 触发器转换的各种功能的触发器都属于主从触发方式。
这种触发方式的工作特点是:克服了在CLK 有效电平期间多次翻转现象,具有一次翻转特性。
就是说,在CLK 有效电平期间,主触发器接受了输入信号发生一次翻转后,主触发器状态就一直保持不变,也不再随输入信号J.K的变化而变化。
实验四用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端的输入有关。
VHDL语言实验指导书
浙江工商大学计算机与信息工程学院 开放实验项目实验指导书
基于 VHDL 的数字逻辑电路设计
指导教师:
傅均
开放地点: 信息楼 119 室
图 1. HST 实验板及包含硬件资源
《基于 VHDL 的数字逻辑电路设计》实验指导书 傅均 V3.0
第2页
图 2. EPM240T100C5 芯片引脚和对应板上资源连接
注意 1: CPLD 的第 9、13、31、45、59、63、80、94 引脚已经接 Vcc 3V;CPLD 的第 10、11、32、46、60、65、79、93 引脚已经接 GND 0V。CPLD 的第 22、 23、24、25 引脚已经用于 JTAG 下载器连接。第 64 引脚已经设置为时钟输入 GCLK3(11MHz)。
开放时间: 第 11-15 周三 10-12 节
电子邮箱: junfu@mail.
2012 年 4 月-6 月 版本 V3.0
目录
1、实验说明和注意事项………………………………………………...(1) 2、实验设备与资源介绍………………………………………………...(1) 3、实验内容与要求…………………………………………………...…(4)
实验一 常用组合逻辑电路设计
一、 实验目的
1 .初步掌握 VHDL 语言的基本单元及其构成。 2 .了解 VHDL 中的顺序语句和并行语句,掌握 process 语句、信号赋值语句等。 3 .学习 Quartus II 9.1 软件的基本操作,掌握文本输入法设计数字电路的过程。 4 .学会编写 3-8 译码器、数值比较器等简单的常用组合逻辑电路。
08 第八章 使用VHDL语言来设计时序电路
第十一章 使用VHDL语言来设计时序电路
8.2.1 VHDL语言的时钟边沿描述
时钟信号的边沿分为上升沿和下降沿,有 的时序逻辑电路是用时钟的上升沿来驱动, 有的时序逻辑电路是用时钟的下降沿来驱 动。
在VHDL语言程序中可以用函数类属性描述 语句中的信号的属性函数SIGNAL‘EVENT 和SIGNAL’LAST_VALUE来分别描述时钟 信号的上升沿和下降沿。
同步时序电路:其所有电路都是用一个公共的时钟信号,电路中所有 的记忆元件都受到这个时钟信号的同一控制,只有在该信号来到的时 候记忆元件的状态才能发生变化,从而使时序电路的输入发生变化; 而且每次时钟信号到来的时候,记忆元件的状态和电路的输出状态才 会发生改变。
异步时序电路:其电路中没有一个统一的时钟信号,各个记忆元件也 不受到同一个时钟控制,电路状态的改变是因为输入信号引起的。
波形并且写出其在VHDL语言中的描述方法。 4、在使用时钟作为敏感信号的时候,需要注意哪
三点? 5、请简述同步计数器和异步计数器的差别。
第十一章 使用VHDL语言来设计时序电路
8.2 时序电路的时钟信号
8.2.1 VHDL语言的时钟边沿描述 8.2.2 使用时钟作为敏感信号
第十一章 使用VHDL语言来设计时序电路
8.2.2 使用时钟作为敏感信号
在设计时序逻辑电路的时候,通常以时钟信号作 为进程的敏感信号,有显式表示和隐式表示两种 方法。
第十一章 使用VHDL语言来设计时序电路
8.4.4 T触发器设计
T触发器(TFF)也是数字逻辑电路中常用 的一种触发器,其真值表如下:
第十一章 使用VHDL语言来设计时序电路
8.5 寄存器设计
寄存器通常在电子系统中用于存放暂时参 与预算的数据、运算结果、指令等,其由 具有记忆功能的触发器组成,此外寄存器 通常还有一些接收数据的控制门用以在同 一个接收命令作用下使寄存器中各触发器 同时接收数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4 VHDL语言进行简单时序电路——一JK触发器的设计一、实验目的
学习在QuartusⅡ下用VHDL语言设计简单时序电路与功能仿真的方法。
二、验仪器设备
1、PC机一台
2、QuartusⅡ。
三、实验要求
1、预习教材中的相关内容,编写出JK触发器的VHDL源程序。
2、用VHDL语言输入方式完成电路设计,编译、仿真。
四、实验内容及参考实验步骤
一、设计输入
1、开机,进入QuartusⅡ。
2、为本工程设计建立一个文件夹。
3、建立设计文件。
选择File菜单之New项,选择文件类型,本设计选择VHDL
File。
建立一个文本编辑文件
4、输入源程序, 保存文件。
注意,必须保存为vhd类型,且文件名与源程序的
实体名相同。
二、创建工程并编译
1、创建一个新的工程,将多路选择器文件加入工程。
2、编译。
点击Start Compilation按钮进行编译。
如果发现错误,改正后再次编
译。
三、仿真
1、建立波形文件。
选择File菜单之New项,选择Other Fles中的Vector Waveform
File文件类型,建立一个波形文件
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 is
port(j,k:in std_logic;
clk:in std_logic;
q,qn:out std_logic);
end entity jkff1;
architecture bhv of jkff1 is
signal q1:std_logic;
begin
process(clk)
begin
if clk'event and clk='1' then
if 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;。