专业课小实验

简介: 专业课小实验

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

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

相关文章
|
7月前
|
异构计算
组原实验(一)
组原实验(一)
|
Web App开发 存储 C++
C++程序设计实验5
C++程序设计实验5
79 0
|
C++
C++程序设计实验7
C++程序设计实验7
66 0
|
C++
C++程序设计实验8
C++程序设计实验8
92 0
|
C++
C++程序设计实验1
C++程序设计实验1
101 0
|
C++
C++程序设计实验6
C++程序设计实验6
97 0
|
Scala
Scala编程实验三
Scala编程实验三
150 0
Scala编程实验三
|
Serverless Scala
Scala编程实验一
Scala编程实验一
211 0
|
小程序 程序员
ass3实验
1.自我情况 2.使用过程 3.心得体会
|
存储 人工智能 BI
实验2
实验2、集合的交、并、差 (1学时) (1)实验目的 通过该实验,进一步让学生熟练掌握循环结构、循环控制条件、分支结构和数组/链表基本操作的实现,掌握函数参数设定的有关内容,体会到用数组存储集合时,需要记录集合元素的个数,否则输出结果会出现数据越界现象。
958 0

相关实验场景

更多
下一篇
DataWorks