专业课小实验

简介: 专业课小实验

VHDL综合练习

一、实验目的

  1. 掌握VHDL基本编程方法;
  2. 掌握一些常用电路的VHDL设计;
  3. 复习Quartus II设计编译和仿真验证。
    二、实验要求
  4. 用VHDL语言完成10进制计数器的设计。
  5. 用VHDL语言完成占空比为50%的10分频器的设计。
  6. 用VHDL语言完成驱动共阴极数码管的显示译码器的设计。
  7. 在QuartusⅡ软件平台上完成编译、仿真。
    三、主要仪器设备
    电脑、Quartus Ⅱ软件平台
    四、实验内容
    1.10进制计数器程序
    (1)输入文本:
    library ieee;
    use ieee.std_logic_1164.all;
    use ieee.std_logic_unsigned.all;

entity cnt10 is

port(

clk:in std_logic;

en :out std_logic;

y:out integer range 0 to 10);

end cnt10;

architecture a of cnt10 is

signal q_temp: integer range 0 to 10;

begin

process(clk)

begin

if(clk’event and clk=‘1’)then

if

q_temp = 9 then

en <= ‘1’;

q_temp <= 0;

else
     q_temp <= q_temp+1;
     en <= '0';
  end if;
end if;

y<=q_temp;

end process;

end a;;

(2)仿真

2.10分频器程序

(1)输入文本:

Library ieee;

Use ieee.std_logic_1164.all;

Use ieee.std_logic_unsigned.all;

Use ieee.std_logic_arith.all;

Entity fdiv is

generic(N: integer:=10); --rate=N,baiN是偶数

port(

clkin: IN std_logic;

clkout: OUT std_logic

);

End fdiv;

Architecture a of fdiv is

signal cnt: integer range 0 to n-1;

Begin

process(clkin) --计数

begin

if(clkin’event and clkin=‘1’) then

if(cnt<n-1) then

cnt <= cnt+1;

else

cnt <= 0;

end if;

end if;

end process;

process(cnt) --根据计数值du,控制输出时钟脉冲的高、低zhi电平

begin

if(cnt<n/2) then

clkout <= ‘1’;

else

clkout <= ‘0’;

end if;

end process;

End a;

(2)仿真

3.显示译码器程序

(1)输入文本:

Library ieee;

Use ieee.std_logic_1164.all;

Entity QELED7 is

PORT(DATA:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

a,b,c,d,e,f,g:out std_logic);

end QELED7;

Architecture LED of QELED7 is

signal y: STD_LOGIC_VECTOR(6 DOWNTO 0);

begin

process(DATA)

begin

case DATA is

when “0000”=>y<=“1111110” ;

when “0001”=>y<=“0110000” ;

when “0010”=>y<=“1101101” ;

when “0011”=>y<=“1111001” ;

when “0100”=>y<=“0110011” ;

when “0101”=>y<=“1011011” ;

when “0110”=>y<=“1011111” ;

when “0111”=>y<=“1110000” ;

when “1000”=>y<=“1111111” ;

when “1001”=>y<=“1111011” ;

when others=>null;

end case;

a<=y(6);b<=y(5);c<=y(4);

d<=y(3);e<=y(2);f<=y(1);g<=y(0);

end process;

end;

(2)仿真

五、实验结果及分析

(1)10进制计数器

当时钟上升沿到来时产生计数加一,当计数为9(0111)时下一个时钟上升沿到来时计数器清零并产生一个时钟周期的进位信号。

(2)占空比为50%的10分频器

由图可知实验结果正确,设置一个5进制计数器,每当其记满是反转输出信号,也就是每10个周期信号进行一次输出周期信号,实现占空比为50%的10分频器。

3)驱动共阴极数码管的显示译码器

共阴极是高电平工作所以0时是除g外都是高电平,可以实现显示0

其他数字也可以依次类推。有图可知我的实验结果正确

相关文章
|
4月前
|
异构计算
组原实验(一)
组原实验(一)
|
C++
C++程序设计实验1
C++程序设计实验1
89 0
|
机器学习/深度学习 Serverless C++
C++程序设计实验2
C++程序设计实验2
230 0
|
存储 C++
C++程序设计实验3
C++程序设计实验3
99 0
|
弹性计算 网络协议 Linux
实验1 常用网络命令-1
实验1 常用网络命令-1
218 0
|
Scala
Scala编程实验三
Scala编程实验三
134 0
Scala编程实验三
|
关系型数据库 MySQL 索引
我做了一天的实验!
对记录加锁时,加锁的基本单位是 next-key lock,它是由记录锁和间隙锁组合而成的,next-key lock 是前开后闭区间,而间隙锁是前开后开区间。但是,next-key lock 在一些场景下会退化成记录锁或间隙锁。 那到底是什么场景呢?今天,我们就以下面这个表来进行实验说明。
我做了一天的实验!
|
小程序 程序员
ass3实验
1.自我情况 2.使用过程 3.心得体会
|
存储
实验三
这个实验三顺序表的实现历经了从前天下午开始在实验室研究标准答案到昨天上午开始写代码并且大概今天才调试成功也是一把鼻涕一把泪的 实验3、顺序表的基本操作 (6学时) (1)实验目的 通过该实验,深入理解顺序表的逻辑结构、物理结构等概念,掌握顺序表基本操作的编程实现,注意顺序表插入、删除等操作过程中数据元素的移动现象,培养学生编写程序时,要考虑程序的强壮性,熟练掌握通过函数参数返回函数结果的办法。
1043 0
|
Web App开发 PHP 数据库
认真一点——实验吧
刚刚做了实验吧的题目,现在整理一下 写出解题思路,希望能够帮助到那些需要帮助的人 所有的wp都是以一题一篇的形式写出 主要是为了能够让读者更好的阅读以及查找, 希望你们不要责怪!!共勉!!!   认真一点!分值:35 来源: 实验吧 难度:难 参与人数:4972人 ...
1977 0