实验三vhdl时序逻辑电路设计

合集下载

数字电路与逻辑设计实验

数字电路与逻辑设计实验

数字电路与逻辑设计实验报告学院:班级:姓名:学号:日期:一.实验名称:实验一:QuartusII 原理图输入法设计与实现实验二:用VHDL 设计与实现组合逻辑电路实验三:用VHDL 设计与实现时序逻辑电路实验四:用VHDL 设计与实现数码管动态扫描控制器二.实验所用器件及仪器:1.计算机2.直流稳压电源3.数字系统与逻辑设计实验开发板三.实验要求:实验一:(1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。

(2)用(1)实现的半加器和逻辑门设计实现一个全加器,仿真并验证其功能,并下载到实验板上测试。

要求用拨码开关设定输入信号,发光二极管显示输出信号。

(3)用3—8线译码器和逻辑门设计实现函数F=/C/B/A+/CB/A+C/B/A+CBA,仿真验证其功能并下载到实验板测试。

要求用拨码开关设定输入信号,发光二极管显示输出信号。

注:实验时将三个元器件放在一个new block diagram中实现。

实验二:(1)用VHDL语言设计实现一个共阴极7段数码译码器,仿真验证其功能,并下载到实验板测试。

要求用拨码开关设定输入信号,7段数码管显示输出信号。

(2)用VHDL语言设计实现一个8421码转余三码的代码器,仿真验证其功能,并下载到实验板测试。

要求用拨码开关设定输入信号,发光二极管显示输出信号。

(3)用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个‘1’时,输出1,否则出0;仿真验证其功能,并下载到实验板测试。

要求用拨码开关设定输入信号,发光二极管显示输出信号。

实验三:(1)用VHDL语言设计实现一个带异步复位的8421 十进制计数器,仿真验证其功能,并下载到实验板测试。

要求用按键设定输入信号,发光二极管显示输出信号。

(2)用VHDL语言设计实现一个分频系数为12,输出信号占空比为50%的分频器,仿真验证其功能。

注:实验时将(1)、(2)和数码管译码器 3 个电路进行链接,并下载到实验板显示计数结果。

vhdl实验报告

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实验(完整版)

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时序逻辑电路设计

实验三 VHDL 时序逻辑电路设计一、实验目的1.熟悉用VHDL语言设计时序逻辑电路的方法2.熟悉用Quartus文本输入法进行电路设计二、实验所用仪器元件及用途1.计算机:装有Quartus软件,为VHDL语言提供操作场所。

2.直流稳压电源:通过USB接口实现,为实验开发板提供稳定电源。

3.数字系统与逻辑设计实验开发板:使试验结果下载到开发板上,实现整个实验的最终结果。

三、实验内容1.用VHDL语言设计实现一个8421码十进制计数器。

(1)实验内容及要求:在Quartus平台上设计程序和仿真题目要求,并下载到实验板上验证试验结果。

(2)试验结果:VHDL代码和仿真结果。

2.用VHDL语言设计实现一个分频系数为8,分频输出信号占空比为50%的分频器。

(1)实验内容及要求:在Quartus平台上设计程序和仿真题目要求。

(2)试验结果:VHDL代码和仿真结果。

3.用VHDL语言设计实现一个控制8个发光二极管亮灭的电路。

(1)实验内容及要求:在Quartus平台上设计程序和仿真题目要求,并下载到实验板上验证试验结果。

a.单点移动模式:一个点在8个发光二极管上来回的亮b.幕布式:从中间两个点,同时向两边依次点亮直至全亮,然后再向中间点灭,依次往复c.通过拨码开关或按键控制两种模式的转换(2)试验结果:VHDL代码和仿真结果。

四、实验设计思路及过程1.8421码十进制计数器状态转移表左图为8421码十进制计数器的状态转移表,abcd为初状态,ABCD为下一状态,每当有“1”出现时,相应的管脚就亮灯,从而从0000到1001的灯依次出现。

VHDL代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count12 ISPORT(clk,clear:IN STD_LOGIC;q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END count12;ARCHITECTURE a OF count12 ISSIGNAL q_temp:ATD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(clk)BEGINIF(clk'event and clk='1') THENIF clear='0' THENq_temp<="0000";ELSIF q_temp="1011"THENq_temp<="0000";ELSEq_temp<=q_temp+1;END IF;END IF;END PROCESS;q<=q_temp;END a;2.分频系数为8,输出占空比为50%的分频器的设计左图为八分频器(占空比50%)的状态转移图,其中abc为原状态,ABC为下一状态。

VHDL语言实现数字电路设计

VHDL语言实现数字电路设计

VHDL语言实现数字电路设计数字电路是由逻辑门、寄存器以及其他数字组件组成的电子系统,用于处理和传输数字信号。

VHDL(Very High-Speed Integrated Circuit Hardware Description Language)是一种硬件描述语言,用于描述数字电路和系统。

通过使用VHDL语言,我们可以实现数字电路的设计,从而满足各种需求。

VHDL语言提供了一种结构化的设计方法,允许设计者描述硬件电路的结构、功能以及时序行为。

以下是一些常见的数字电路设计任务,以及如何使用VHDL语言来实现它们。

1. 门电路设计门电路是最简单的数字电路之一,由逻辑门组成。

使用VHDL语言,我们可以通过描述逻辑门的输入和输出来实现门电路的设计。

例如,我们可以使用VHDL语言描述一个与门:```vhdlentity AND_gate isport (A, B : in bit;Y : out bit);end entity AND_gate;architecture dataflow of AND_gate isbeginY <= A and B;end architecture dataflow;```在这个例子中,我们定义了一个输入端口A和B,以及一个输出端口Y。

在architecture部分,我们使用VHDL语言描述了Y的逻辑值为A和B的逻辑与。

2. 时序逻辑电路设计时序逻辑电路是根据时钟信号进行操作和状态转换的电路。

使用VHDL语言,我们可以描述时序逻辑电路的行为和状态变化。

例如,我们可以使用VHDL语言描述一个触发器:```vhdlentity D_flip_flop isport (D, CLK : in bit;Q : out bit);end entity D_flip_flop;architecture behavior of D_flip_flop issignal Q_temp : bit;beginprocess(CLK)beginif CLK'event and CLK = '1' thenQ_temp <= D;end if;end process;Q <= Q_temp;end architecture behavior;```在这个例子中,我们定义了一个输入端口D和CLK,以及一个输出端口Q。

数电实验丨模型机的组合逻辑部件(ALU-移位逻辑-控制信号产生逻辑模块)

数电实验丨模型机的组合逻辑部件(ALU-移位逻辑-控制信号产生逻辑模块)

数字电路与逻辑设计实验三一、实验目的1.了解简易模型机的内部结构和工作原理。

2.分析模型机的功能,设计ALU 和移位逻辑。

3.分析模型机的工作原理,设计模型机控制信号产生逻辑。

二、实验内容1.用VHDL 语言设计模型机的ALU 模块;2.用VHDL 语言设计模型机的移位模块;3.用VHDL 语言设计模型机的控制信号产生逻辑。

第一部分:模型机的ALU 模块①实验方法1、实验方法采用基于FPGA进行数字逻辑电路设计的方法。

采用的软件工具是Quartus II。

2、实验步骤1、新建,编写源代码。

(1).选择保存项和芯片类型:【File】-【new project wizard】-【next】(设置文件路径+设置project name为ALU)-【next】(设置文件名ALU.vhd—在【add】)-【properties】(type=AHDL)-【next】(family=FLEX10K;name=EPF10K10TI144-4)-【next】-【finish】 (2).新建:【file】-【new】(第二个AHDL File)-【OK】2、根据题意,写好源代码并保存文件。

3、编译与调试。

确定源代码文件为当前工程文件,点击【processing】-【start compilation】进行文件编译,编译成功。

4、波形仿真及验证。

新建一个vector waveform file。

按照程序所述插入S3-S0、M、S、D、T、Cf、Zf十个节点(S3-S0、M、S、D为输入节点,T、Cf、Zf为输出节点)。

(操作为:右击 -【insert】-【insert node or bus】-【node finder】(pins=all;【list】)-【>>】-【ok】-【ok】)。

任意设置S3-S0、M、S、D的输入波形…点击保存按钮保存。

然后【start simulation】,得到输出图。

5、时序仿真或功能仿真。

时序逻辑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实验报告

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系统设计》实验报告》时序逻辑电路的设计

《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模型:
三.总结
本次实验中较为顺利,在第一次课的时间内我就已经完成了必做实验与选作实验。

在实验的过程中,在防抖电路处有了较大的困难。

由于仿真中不存在此问题,在实际操作中参数选择时遇到了一定的困难。

在反复比对效果之后,我
确定了电路的参数,实现了防抖功能。

通过这次实验,我对时钟脉冲、计数器等有了更加深入的认识与理解。

实验三VHDL

实验三VHDL

4、模7计数器
硬件描述语言1
端口说明: PORT( clk : IN STD_LOGIC; q : OUT INTEGER RANGE 0 TO 6);
功能描述:
VARIABLE cnt : INTEGER RANGE 0 TO 6; BEGIN IF (clk'EVENT AND clk = '1') THEN IF cnt < 6 THEN cnt := cnt + 1; ELSE cnt :=0; END IF; END IF; q <= cnt;
ARCHITECTURE arc_shiftreg OF shiftreg IS SIGNAL q_temp : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(cr,clk) BEGIN …… …… --见下页 END PROCESS; q<=q_temp; END arc_shiftreg;
假设数据已经被时钟的上升沿打入D触发器,那么数据 到达第一个触发器的Q端需要Tco,再经过组合逻辑的 延时Tdelay到达的第二个触发器的D端,要想时钟能在 第二个触发器再次被稳定的锁入触发器,则时钟的延 迟不能晚于Tco+Tdelay+Tsetup,(回顾建立和保持时 间的概念,就可以理解Tdelay) 由以上分析可知:最 小时钟周期:T=Tco+Tdelay+Tsetup 最快时钟频率 F= 1/T PLD开发软件也正是通过这个公式来计算系统运行 速度Fmax
硬件描述语言2: 功能描述:
IF (clk'EVENT AND clk='1') THEN CASE cnt IS WHEN "000"=>cnt<="001"; WHEN "001"=>cnt<="010"; WHEN "010"=>cnt<="011"; WHEN "011"=>cnt<="100"; WHEN "100"=>cnt<="101"; WHEN "101"=>cnt<="000"; WHEN others=>NULL; END CASE; END IF; q <= cnt;

数字系统设计及实验实验报告

数字系统设计及实验实验报告

数字系统设计及实验实验报告一、实验目的数字系统设计及实验课程旨在让我们深入理解数字逻辑的基本概念和原理,掌握数字系统的设计方法和实现技术。

通过实验,我们能够将理论知识应用于实际,提高解决问题的能力和实践动手能力。

本次实验的具体目的包括:1、熟悉数字电路的基本逻辑门、组合逻辑电路和时序逻辑电路的设计方法。

2、掌握使用硬件描述语言(如 Verilog 或 VHDL)进行数字系统建模和设计。

3、学会使用相关的电子设计自动化(EDA)工具进行电路的仿真、综合和实现。

4、培养团队合作精神和工程实践能力,提高解决实际问题的综合素质。

二、实验设备和工具1、计算机:用于编写代码、进行仿真和综合。

2、 EDA 软件:如 Quartus II、ModelSim 等。

3、实验开发板:提供硬件平台进行电路的下载和测试。

4、数字万用表、示波器等测量仪器:用于检测电路的性能和信号。

三、实验内容1、基本逻辑门电路的设计与实现设计并实现与门、或门、非门、与非门、或非门和异或门等基本逻辑门电路。

使用 EDA 工具进行仿真,验证逻辑功能的正确性。

在实验开发板上下载并测试实际电路。

2、组合逻辑电路的设计与实现设计一个 4 位加法器,实现两个 4 位二进制数的相加。

设计一个编码器和译码器,实现数字信号的编码和解码。

设计一个数据选择器,根据控制信号选择不同的输入数据。

3、时序逻辑电路的设计与实现设计一个同步计数器,实现模 10 计数功能。

设计一个移位寄存器,实现数据的移位存储功能。

设计一个有限状态机(FSM),实现简单的状态转换和控制逻辑。

四、实验步骤1、设计方案的确定根据实验要求,分析问题,确定电路的功能和性能指标。

选择合适的逻辑器件和设计方法,制定详细的设计方案。

2、代码编写使用硬件描述语言(如 Verilog 或 VHDL)编写电路的代码。

遵循代码规范,注重代码的可读性和可维护性。

3、仿真验证在 EDA 工具中对编写的代码进行仿真,输入不同的测试向量,观察输出结果是否符合预期。

VHDL实验指导书

VHDL实验指导书

实验一MAX plu sⅡ的使用【实验目的】1.掌握MAX plu sⅡ的使用2.掌握逻辑门的VHDL描述方法【实验内容】一、MAX plu sⅡ的设计流程1.创建设计输入文件(1)在“MAX2work”目录下创建自己的工作目录“mywork”,使得以后自己做的设计都保存在这个目录下。

(2)单击“file”菜单中的“new”选项,出现图1-1所示的新建文件窗口。

图1-1 新建文件窗口图(3)选择“Text Editor file”,单击“OK”按钮,出现文本编辑器,然后在文本编辑器里输入设计程序。

2.保存文件单击工具栏上的保存按钮,出现如图1-2所示的保存窗口。

图1-2 保存窗口图选择自己的工作目录,建立自己的文件名,保存所做的设计。

3.设置项目(1)选择菜单【File】/【Project】/【Set Project to Current File】命令,出现图1-3所示的窗口。

图1-3 设置项目窗口图设置项目名与设计文件名相同,一般软件会自动填入此项目名,这是后续处理必不可少的一步。

4.设定器件(1)选择菜单【Assign】/【Device】命令,出现图1-4所示的窗口。

图1-4 设定器件窗口图(2)在“Device Family”选项中选择所使用的系列芯片;在“Devices”中选择“AUTO”,让软件自动选择具体器件。

单击“OK”按钮,即设定好器件。

(3)单击工具栏上的保存按钮,保存好以上所有的设计和设置。

5.编译项目(1)选择菜单【MAX plu sⅡ】/【Compiler】命令,出现编译窗口,然后选择菜单命令【Processing】/【Functional SNF Extractor】如图1-5所示。

(2)单击“Start”按钮,开始编译,编译成功后,会出现1-6所示的窗口。

6.功能仿真(1)创建波形文件:在菜单栏中选择命令【File】/【New】,出现新建文件窗口,选择“Waveform Editor File”选项,如图1-7所示。

VHDL语言实验指导书

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 译码器、数值比较器等简单的常用组合逻辑电路。

vhdl实验

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时序逻辑电路设计部分实验VHDL源代码

北邮 VHDL时序逻辑电路设计部分实验VHDL源代码

(写的有点简陋,见谅哈,各位~~)VHDL时序设计逻辑电路设计(一)四位二进制减计数器(摘自网上)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count1 isport(ci:in std_logic; --计数信号reset: in std_logic; --异步复位load: in std_logic; --同步置数clk: in std_logic;d : in std_logic_vector(3 downto 0); --置数值q : buffer std_logic_vector(3 downto 0);co: out std_logic --计数溢出标志);end count1;architecture behave of count1 isbeginprocess(clk,reset)beginif(reset='0') thenq<="0000";elsif(clk'event and clk='1') thenif(load='1') thenq<=d;elsif(ci='1') thenif(q=0) thenq<="1111";co<='1';elseq<=q-1;co<='0';end if;end if;end if;end process;end behave;VHDL时序设计逻辑电路设计(二)(一)带异步复位的4位能自动启动环形计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY HUANXINGJISHU ISPORT(clk,rs:IN STD_LOGIC;countout:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END HUANXINGJISHU;ARCHITECTURE behave OF HUANXINGJISHU ISSIGNAL Q:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(rs,clk)BEGINIF rs='0' THEN Q<="0011";ELSIF(clk'event AND clk='1') THENCASE Q ISWHEN"0000"=>Q<="0001";WHEN"0001"=>Q<="0010";WHEN"0010"=>Q<="0100";WHEN"0011"=>Q<="0110";WHEN"0100"=>Q<="1000";WHEN"0101"=>Q<="1010";WHEN"0110"=>Q<="1100";WHEN"0111"=>Q<="1110";WHEN"1000"=>Q<="0001";WHEN"1001"=>Q<="0010";WHEN"1010"=>Q<="0100";WHEN"1011"=>Q<="0110";WHEN"1100"=>Q<="1000";WHEN"1101"=>Q<="1010";WHEN"1110"=>Q<="1100";WHEN"1111"=>Q<="1110";WHEN OTHERS =>Q<="0000";END CASE;END IF;END PROCESS;countout<=Q;END behave;(二)带异步复位的4位能自启动扭形计数器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY NIUHUAIJISHU ISPORT(clk,rs:IN STD_LOGIC;countout:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END NIUHUAIJISHU ;ARCHITECTURE behave OF NIUHUAIJISHU ISSIGNAL Q:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(rs,clk)BEGINIF rs='0' THEN Q<="0100";ELSIF(clk'event AND clk='1') THENCASE Q ISWHEN"0000"=>Q<="0001";WHEN"0001"=>Q<="0011";WHEN"0010"=>Q<="0101";WHEN"0011"=>Q<="0111";WHEN"0100"=>Q<="1001";WHEN"0101"=>Q<="1011";WHEN"0110"=>Q<="1101";WHEN"0111"=>Q<="1111";WHEN"1000"=>Q<="0000";WHEN"1001"=>Q<="0010";WHEN"1010"=>Q<="0101";WHEN"1011"=>Q<="0111";WHEN"1100"=>Q<="1000";WHEN"1101"=>Q<="1010";WHEN"1110"=>Q<="1100";WHEN"1111"=>Q<="1110";WHEN OTHERS =>Q<="0000";END CASE;END IF;END PROCESS;countout<=Q;END behave;VHDL时序逻辑电路设计(三)(一)带控制端的8位二进制寄存器:先生成一VHDL file文件,编译以下底层的D触发器文件:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DCHUFAQI ISPORT (d,clk:IN STD_LOGIC;q:OUT STD_LOGIC);END DCHUFAQI;ARCHITECTURE one OF DCHUFAQI ISBEGINPROCESSBEGINW AIT UNTIL clk='1';q<=d;END PROCESS ;END one;再在同一工程下生成一VHDL文件,源代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY JICUNQI ISPORT(d: IN STD_LOGIC_VECTOR (7 DOWNTO 0);oe,clk: IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); END JICUNQI;ARCHITECTURE struc OF JICUNQI ISCOMPONENT DCHUFAQIPORT(d,clk:IN STD_LOGIC;q: OUT STD_LOGIC);END COMPONENT;SIGNAL temp:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINPROCESS(clk,oe)BEGINIF oe='1' THENq<="ZZZZZZZZ";ELSEq<=temp;END IF;END PROCESS;u0:DCHUFAQI PORT MAP(d(0),clk,temp(0));u1:DCHUFAQI PORT MAP(d(1),clk,temp(1));u2:DCHUFAQI PORT MAP(d(2),clk,temp(2));u3:DCHUFAQI PORT MAP(d(3),clk,temp(3));u4:DCHUFAQI PORT MAP(d(4),clk,temp(4));u5:DCHUFAQI PORT MAP(d(5),clk,temp(5));u6:DCHUFAQI PORT MAP(d(6),clk,temp(6));u7:DCHUFAQI PORT MAP(d(7),clk,temp(7));END struc;(二)带控制端的8位二进制锁存器:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SUOCUNQI ISPORT(d:IN STD_LOGIC_VECTOR(7 DOWNTO 0);oe,clk:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END SUOCUNQI;ARCHITECTURE struc OF SUOCUNQI ISSIGNAL temp:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINPROCESS(clk,oe)BEGINIF oe='0' THENIF clk='1' THENtemp<=d;END IF;ELSEtemp<="ZZZZZZZZ";END IF;q<=temp;END PROCESS;END struc;。

实验三_VHDL时序逻辑电路设计

实验三_VHDL时序逻辑电路设计

实验三实验三 VHDL VHDL VHDL 时序逻辑电路设计时序逻辑电路设计 一、实验目的一、实验目的1. 熟悉用VHDL 语言设计时序逻辑电路的方法语言设计时序逻辑电路的方法 2. 熟悉用Quartus 文本输入法进行电路设计文本输入法进行电路设计 二、实验所用仪器元件及用途二、实验所用仪器元件及用途 1. 计算机:装有Quartus 软件,为VHDL 语言提供操作场所。

语言提供操作场所。

2. 直流稳压电源:通过USB 接口实现,为实验开发板提供稳定电源。

接口实现,为实验开发板提供稳定电源。

3. 数字系统与逻辑设计实验开发板:使试验结果下载到开发板上,实现整个实验的最终结果。

果。

三、实验内容三、实验内容 1. 用VHDL 语言设计实现一个8421码十进制计数器。

码十进制计数器。

(1) 实验内容及要求:在Quartus 平台上设计程序和仿真题目要求,并下载到实验板上验证试验结果。

验证试验结果。

(2) 试验结果:VHDL 代码和仿真结果。

代码和仿真结果。

2. 用VHDL 语言设计实现一个分频系数为8,分频输出信号占空比为50%的分频器。

的分频器。

(1) 实验内容及要求:在Quartus 平台上设计程序和仿真题目要求。

平台上设计程序和仿真题目要求。

(2) 试验结果:VHDL 代码和仿真结果。

代码和仿真结果。

3. 用VHDL 语言设计实现一个控制8个发光二极管亮灭的电路。

个发光二极管亮灭的电路。

(1) 实验内容及要求:在Quartus 平台上设计程序和仿真题目要求,并下载到实验板上验证试验结果。

验证试验结果。

a. 单点移动模式:一个点在8个发光二极管上来回的亮个发光二极管上来回的亮b. 幕布式:从中间两个点,同时向两边依次点亮直至全亮,然后再向中间点灭,依次往复往复c. 通过拨码开关或按键控制两种模式的转换通过拨码开关或按键控制两种模式的转换 (2) 试验结果:VHDL 代码和仿真结果。

数电实验考试题

数电实验考试题

04
实验四:数模转换与模数转 换
实验目的
掌握数模转换器(DAC)和模数转换 器(ADC)的工作原理。
学会使用数模转换器和模数转换器进 行信号的转换。
了解数模转换器和模数转换器在现实 生活中的应用。
实验设备
DAC芯片(如: DAC0832)
信号发生器
ADC芯片(如: ADC0809)
示波器
实验步骤
数模转换器(DAC)实验步骤 1. 将DAC芯片连接到电脑,通过软件设置需要转换的数字信号。
2. 将数字信号通过DAC芯片转换为模拟信号。
实验步骤
01
02
03
3. 使用示波器观察DAC 输出的模拟信号波形,
并记录下来。
4. 分析DAC输出的模拟 信号,并与原始数字信 号进行比较,评估转换
精度。
模数转换器(ADC)实验 步骤
实验设备
数字逻辑电路实验箱
逻辑门电路(与门、或门、 非门)
02
01 03
信号源
示波器
04
05
实验导线若干
实验步骤
实验前准备
检查实验设备是否齐全,确保实验 环境安全。
搭建电路
根据实验要求,选择合适的逻辑门 电路,使用实验导线连接信号源和 示波器。
测试与门
设置信号源产生一组高低电平信号 ,通过与门电路,观察示波器显示 的输出信号,记录结果。
实验步骤
步骤二:设计电路
根据逻辑功能,选择合适的逻辑门电路(如AND、 OR、NOT等)。
使用逻辑门电路构建电路图,实现所需的逻辑功 能。
实验步骤
01
注意合理安排门电路的连接方式,尽量减少使用的门电路数量。
02
步骤三:搭建与测试

浙大数字电路实验报告

浙大数字电路实验报告

实验报告课程名称:_________数字电路实验____________指导老师:___屈民军___ 成绩:__________________ 实验名称:实验三 用HDL 语言设计组合逻辑电路 实验十一 用HDL 语言设计时序电路 实验类型:_同组学生姓名:_一、实验目的和要求(必填)1、 掌握用AHDL 、VHDL 、或Verilog HDL 硬件描述语言来设计组合逻辑电路。

掌握译码器和编码器的功能和设计。

2、 初步了解实验板中的LED 数码显示器。

3、 掌握用MAX+PlusII 对逻辑电路进行逻辑功能、延时等各种仿真的方法。

4、 掌握用AHDL 、VHDL 、或Verilog HDL 硬件描述语言来设计时序逻辑电路的方法和计数器、分频器、移位寄存器、序列信号发生器电路等常用时序电路的HDL 语言描述方法。

5、 掌握用MAX+PlusII 软件对AHDL 、VHDL 或Verilog HDL 硬件描述语言进行快速编译和逻辑综合、逻辑功能仿真、延时分析等各种实验过程。

二、实验内容和原理(必填)1、 用AHDL 、VHDL 或Verilog HDL 硬件描述语言设计一个驱动七段LED 共阳数码管的十六进制译码器,有一个使能信号EN ,EN 为高电平时正常工作,EN 为低电平时数码管不显示。

2、 用AHDL 、VHDL 或Verilog HDL 硬件描述语言来设计多模加/减计数器,具有异步清零、计数使能S 1 S 0 模 功能0 0 10 10进制加法计数器 0 1 10 10进制减法计数器 1 0 12 12进制加法计数器 111212进制减法计数器三、主要仪器设备(必填)计算机、功能模块。

四、操作方法和实验步骤1、 (1)采用状态机设计程序如下:module encoder(a,b,c,d,e,f,g,NB1,NB2,NB3,NB4,NB5,NB6,NB7,NB8,EN,D3,D2,D1,D0); output a,b,c,d,e,f,g;output NB1,NB2,NB3,NB4,NB5,NB6,NB7,NB8; input EN,D3,D2,D1,D0; reg a,b,c,d,e,f,g; assign NB1=!EN; assign NB2=1; assign NB3=1; assign NB4=1; assign NB5=1; assign NB6=1;专业: 电子信息工程 姓名: 吴峰学号: 3051131053 日期: 2007.1.4 地点: 东一B 415assign NB7=1;assign NB8=1;always @(D3 or D2 or D1 or D0)begincase({D3,D2,D1,D0})4'b0000: {a,b,c,d,e,f,g}=7'b0000001;4'b0001: {a,b,c,d,e,f,g}=7'b1001111;4'b0010: {a,b,c,d,e,f,g}=7'b0010010;4'b0011: {a,b,c,d,e,f,g}=7'b0000110;4'b0100: {a,b,c,d,e,f,g}=7'b1001100;4'b0101: {a,b,c,d,e,f,g}=7'b0100100;4'b0110: {a,b,c,d,e,f,g}=7'b0100000;4'b0111: {a,b,c,d,e,f,g}=7'b0001111;4'b1000: {a,b,c,d,e,f,g}=7'b0000000;4'b1001: {a,b,c,d,e,f,g}=7'b0001100;4'b1010: {a,b,c,d,e,f,g}=7'b0001000;4'b1011: {a,b,c,d,e,f,g}=7'b1100000;4'b1100: {a,b,c,d,e,f,g}=7'b0110001;4'b1101: {a,b,c,d,e,f,g}=7'b1000010;4'b1110: {a,b,c,d,e,f,g}=7'b0110000;4'b1111: {a,b,c,d,e,f,g}=7'b0111000;endcaseendendmodule(2)进行仿真,结果如下:(3)延时分析:(4)管脚分配a接73脚,b接76脚,c接4脚,d接10脚,e接8脚,f接74脚,g接81脚;NB1接79脚,NB2接75脚,NB3接77脚,NB4接80脚,NB5接9脚,NB6接11脚,NB7接15脚,NB8接12脚;D3接52脚,D2接51脚,D1接50脚,D0接49脚;EN接1脚;2、(1)用行为描述方法设计程序如下:module count(q,s1,s0,clear,clk,EN);output[3:0] q;input s1,s0;input clk,clear,EN;reg[3:0] q;always @(posedge clk or negedge clear)if(!clear) q=0;elsecase({s1,s0})2’b00: if(q==4’b1001) q=0; else q=q+EN;2’b01: if(q==4’b0000) q=4’b1001; else q=q-EN;2’b10: if(q==4’b1011) q=0; else q=q+EN;2’b11: if(q==4’b0000) q=4’b1011; else q=q-EN;endcaseendmodule(2)仿真结果如下:a、b、c、d、(3)延时分析:五、实验数据记录和处理按照上面的管脚分配将程序下载到实验模板进行实验。

数电实验三——精选推荐

数电实验三——精选推荐

数电实验三东南大学电工电子实验中心实验报告课程名称:计算机逻辑结构及设计第三次实验实验名称:时序逻辑电路院(系):吴健雄学院专业:姓名:学号:实验室: 实验组别:同组人员:实验时间:年月日评定成绩:审阅教师:一、实验目的1.2.3.4.5.6. 掌握时序逻辑电路的一般设计过程掌握时序逻辑电路的时延分析方法,了解时序电路对时钟信号相关参数的基本要求掌握时序逻辑电路的基本调试方法熟练使用示波器和逻辑分析仪观察波形图掌握ISE软件的使用方法掌握VHDL语言二、实验原理数字电路根据逻辑功能的不同特点,可以分成两大类,一类叫组合逻辑电路(简称组合电路),另一类叫做时序逻辑电路(简称时序电路)。

组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。

而时序逻辑电路在逻辑功能上的特点是任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。

常用时序逻辑器件:1. D触发器D触发器有六个端口,CP接时钟周期信号,D为信号输入端。

Q 和~Q为信号输出端,~S和~R为使能控制端。

在两个使能控制端都输入1时触发器锁存D,~R为0,~S为1时输出Q为1,反之输出Q 为0.不允许两个使能端同时为0,会造成不稳定的未知状态。

D触发器是时序逻辑电路的基本器件,主要作用是在时钟信号上升沿将D的信号输出。

2. MSI计数器计数器74161为模16计数器,其中包含两个使能端ENP和ENT,一个同步置数端~L,置数输入端D0~3,异步清零端~CLR,输出端Q0~3以及进位信号CO。

计数器在时钟的上升沿输出加1.除了74161外,还有74160、74163、74193、74197、74192等等,不同的MSI计数器有不同的特殊功能,但本质都类似,只是遵循不同的码制,清零置数方式以及增减模式而已。

计数器常用来制作分频器。

3. 移位寄存器移位寄存器74194包括工作模式控制端S1S0,置数输入端D0~3,输出端Q0~3以及串行输入端。

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

实验三 VHDL 时序逻辑电路设计
一、实验目的
1.熟悉用VHDL语言设计时序逻辑电路的方法
2.熟悉用Quartus文本输入法进行电路设计
二、实验所用仪器元件及用途
1.计算机:装有Quartus软件,为VHDL语言提供操作场所。

2.直流稳压电源:通过USB接口实现,为实验开发板提供稳定电源。

3.数字系统与逻辑设计实验开发板:使试验结果下载到开发板上,实现整个实验的最终结果。

三、实验内容
1.用VHDL语言设计实现一个8421码十进制计数器。

(1)实验内容及要求:在Quartus平台上设计程序和仿真题目要求,并下载到实验板上验证试验结果。

(2)试验结果:VHDL代码和仿真结果。

2.用VHDL语言设计实现一个分频系数为8,分频输出信号占空比为50%的分频器。

(1)实验内容及要求:在Quartus平台上设计程序和仿真题目要求。

(2)试验结果:VHDL代码和仿真结果。

3.用VHDL语言设计实现一个控制8个发光二极管亮灭的电路。

(1)实验内容及要求:在Quartus平台上设计程序和仿真题目要求,并下载到实验板上验证试验结果。

a.单点移动模式:一个点在8个发光二极管上来回的亮
b.幕布式:从中间两个点,同时向两边依次点亮直至全亮,然后再向中间
点灭,依次往复
c.通过拨码开关或按键控制两种模式的转换
(2)试验结果:VHDL代码和仿真结果。

四、实验设计思路及过程
1.8421码十进制计数器状态转移表
左图为8421码十进制
计数器的状态转移表,abcd
为初状态,ABCD为下一状
态,每当有“1”出现时,
相应的管脚就亮灯,从而从
0000到1001的灯依次出
现。

VHDL代码如下:
LIBRARY IEEE;
USE count12 IS
PORT(
clk,clear:IN STD_LOGIC;
q :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
END count12;
ARCHITECTURE a OF count12 IS
SIGNAL q_temp:ATD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(clk)
BEGIN
IF(clk'event and clk='1') THEN
IF clear='0' THEN
q_temp<="0000";
ELSIF q_temp="1011"THEN
q_temp<="0000";
ELSE
q_temp<=q_temp+1;
END IF;
END IF;
END PROCESS;
q<=q_temp;
END a;
左图为八分
频器(占空比
50%)的状态转
移图,其中abc
为原状态,ABC为
下一状态。

当输
出F为“1”时,
输出波形。

VHDL代码为:
LIBRARY IEEE;
USE div_8 IS
PORT(
clk:IN STD_LOGIC;
clear:IN STD_LOGIC;
clk_out:OUT STD_LOGIC);
END div_8;
ARCHITECTURE a OF div_8 IS
SIGNAL tmp:INTEGER RANGE 0 TO 7;
BEGIN
p1:PROCESS(clear,clk)
BEGIN
IF clear='0'THEN
tmp<=0;
ELSIF clk'event AND clk='1' THEN
IF tmp=7 THEN
tmp<=0;
ELSE
tmp<=tmp+1;
END IF;
IF tmp<=4 THEN
clk_out<='0';
ELSE
clk_out<='1';
END IF;
END IF;
END PROCESS p1;
END a;
五、实验结果
一、.8421码十进制计数器
其中,end time 设为 50us, clear和clk的period 分别为1和1us.
对结果进行分析:
由仿真波形可以看出,当输入在0000到1001时,输出对应亮灯随着1的出现依次变化,每拨动一次时钟clk的锁定管脚,就由一个状态转换到下一状态,亮灯也进入下一状态。

二、八分频器(50%占空比)
波形分析:
每出现八次时钟为分频器的周期,输出的波形如图为占空比为50%的矩形波,构成了如题所要求的分频器。

六、故障及问题分析
1.每次实验中都应该注意到VHDL的文件名应与实体名一致,如果不一致编译会报错。

我在实验过程中虽然原理图设计名与工程名相同,但在其后某程序名上犯了错误,导致出错。

2.在仿真波形的观察中,一定要调节好zoom一选项,缩放出便于观察的波形。

3.在命名过程一定要注意规范,不要出现非法字符。

4.在做10进制计数器时,由于板的固有频率为晶振的频率50兆赫兹,所以当以微秒级的时钟去自动跳变太快根本无法看清,应该加一段程序令时钟在微秒级跳变25兆次时外部时钟输出,从而令外部时钟变为秒级的,才能看见自动跳变现象。

七.总结和结论
1.本次实验是有关于VHDL的第三次实验,在前几次的实验中已经基本掌握了软件的用法,所以实验起来比较上手,还需要多加练习。

2.由于上次实验仅仅是运用图形工具,所以对VHDL语言的学习成了本次实验的难点,在仔细看过相关参考书后,发现其实VHDL语言还是相对比较好理解的,多次研读语言后应该能自行进行修改等工作。

3.有许多有语言功底的同学能编出十分简洁而有效的编码,值得我向其请教学习,还要更加努力掌握这门语言。

数电实验三
VHDL时序逻辑电路设计
班级:07115
学号:30号
姓名:杨帆。

相关文档
最新文档