资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
实验3 基于硬件描述语言的电路设计一、 实验目的1 、了解可编程数字系统设计的流程;2 、掌握Quartus II 软件的使用方法;3 、掌握采用硬件描述语言设计数字系统的方法和流程。二、实验设备1、计算机:Quartus II 软件2、 Altera DE0 三、实验内容要求1:学习并掌握硬件描述语言(VHDL或Verilog HDL);熟悉门电路的逻辑功能,并用硬件描述语言实现门电路的设计。参考“参考内容1”中给出的与门源程序,编写一个异或门逻辑电路。1)用QuartusII波形仿真验证;2)下载到DE0开发板验证。要求2:熟悉中规模器件译码器的逻辑功能,用硬件描述语言实现其设计。参考“参考内容2”中给出的将8421BCD码转换成0-9的七段码译码器源程序,编写一个将二进制码转换成0-F的七段码译码器。1)用QuartusII波形仿真验证;2)下载到DE0开发板,利用开发板上的数码管验证。要求3:熟悉时序电路计数器的逻辑功能,用硬件描述语言实现其设计。参考“参考内容3”中给出的四位二进制加减计数器的源程序,编写一个计数器。1)用QuartusII波形仿真验证;2)下载到DE0开发板验证。要求4:熟悉分频电路的逻辑功能,并用硬件描述语言实现其设计。参考“参考内容4”中给出的50M分频器的源程序,编写一个能实现占空比50%的5M和50M分频器即两个输出,输出信号频率分别为10Hz和1Hz。1)下载到DE0开发板验证。(提示:利用DE0板上已有的50M晶振作为输入信号,通过开发板上两个的LED灯观察输出信号)。电路框图如下:四、实验结果 1、用硬件描述语言(VHDL 或Verilog HDL)实现一个异或门电路。VHDL源程序:Library ieee;use ieee.std_logic_1164.all;entity vhdl isport(A,B:IN std_logic;C:OUTstd_logic);END vhdl;Architecture fwm of vhdl isbeginCdis_outdis_outdis_outdis_outdis_outdis_outdis_outdis_outdis_outdis_outdis_outdis_outdis_outdis_outdis_outdis_outdis_out=1111111;-灭灯,不显示END CASE;END PROCESS;END fwm;波形图:引脚对应表:3、用硬件描述语言实现四位二进制加法或减法计数器,并用一位7段码显示减法计数器VHDL源文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY EX3 IS PORT ( clk,RST,MLZ: IN STD_LOGIC;DOUT : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);COUT : OUT STD_LOGIC);END EX3;ARCHITECTURE fwm OF EX3 ISSIGNAL Q1 : STD_LOGIC_VECTOR (3 DOWNTO 0);BEGINPROCESS(clk,RST,Q1,MLZ)BEGINIF RST =0 THEN Q10);COUT=0;ELSIFclkEVENT AND clk=1 THEN IF MLZ=0 THEN Q1=Q1+1;COUT=1111THEN Q10);COUT=1;END IF; ELSIF MLZ=1 THENQ1=Q1-1;COUT=0;IF Q1 =0000THEN Q11);COUT=1;END IF;END IF;END IF;END PROCESS;DOUT=Q1 ;END fwm;减法计数器波形图:引脚对应表 CLK对应开发板上的G21引脚4、用硬件描述语言实现5M 和50M 分频器(占空比为50% ),即两个输出信号频率分别为10Hz 和1Hz。VHDL源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY EX4 ISPORT(clk,AS: IN STD_LOGIC; clk_out1: OUT STD_LOGIC);END EX4;ARCHITECTURE fwm OF EX4 IS SIGNAL A: STD_LOGIC; CONSTANT m: INTEGER:=25000000; SIGNAL tmp1: STD_LOGIC; SIGNAL tmp2: STD_LOGIC;BEGIN PROCESS(clk,AS,A) VARIABLE cout1 : INTEGER range 0 to 50000000; VARIABLE cout2 : INTEGER range 0 to 5000000; BEGIN IF clkEVENT AND clk=1 THEN cout1:=cout1+1; IF cout1=m THEN tmp1=0; ELSIF cout1m*2 THEN tmp1=1; ELSE cout1:=0; END IF; cout2:=cout2+1; IF cout2=m/10 THEN tmp2=0; ELSIF cout2m/5 THEN tmp2=1; ELSE cout2:=0; END IF;IF AS=1 THEN A=tmp1;ELSE A=tmp2;END IF;END IF;END PROCESS;clk_out1=A;END fwm;五、心得体会实验结束后要进行验证,利用数码管在电路板上显示出的信息进行验证,确保实验结果的准确性,而且在编译程序时唇线的问题不少,总工会出现编译运行错误,但最终还是完成了。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号