專業課小實驗

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
其他數字也可以依次類推。有圖可知我的實驗結果正確

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章