浙江工業大學 電腦學院-數字邏輯電路課程設計報告

來源:互聯網
上載者:User

數字邏輯電路課程設計報告

 

一、實驗內容

 

1. 12進位計數器設計。

2. 數字頻率計的設計。

二.12進位計數器設計

1.設計要求

用74LS192設計12進位加法計數器,計數值從01~12迴圈,用7段LED數位管顯示計數值。用DEII實驗板驗證。

2.原理圖設計

1利用兩個74LS192充當計數器的高位和低位,中左邊的74LS192作為低位,右邊的74LS192為高位.兩片的輸入端A,B,C,D均置數0,0,0,0,左邊的74LS192輸入頻率為1kHZ的訊號.

2利用74LS47解碼器,將傳入的十進位訊號直接翻譯成7段顯示碼,輸出介面接上7段顯示管。

3利用一個與非門實現十進位。當產生001011時設定清零連接埠有效

12進位加法計數器原理圖1所示。

圖1 12進位加法計數器原理圖

3.操作步驟

1.開啟QuartusII軟體,建立wizard,選取器件為CycloneIIEP2C35F672C8。建立 block Diagram/Schematic File,建立cnt12.bdf檔案

2. 將元器件74LS192,74LS47,與非門,輸入輸出引腳從library匯入,連好圖,修改輸入輸出引腳的名字。

3進行全程編譯,無誤後啟動“Assigment-Pin”菜單,配置引腳的location

分別為PIN-V13,PIN-V14,PIN-AE11,PIN-AD11,PIN-AC12,PIN-AB12,PIN-AF12.

4在QuartusII軟體選擇“Tools”菜單下的“Programmer”命令。在下載之前,要進行硬體設定,在“Hardware Setting”中選擇“USB-Blaster”,將編程模式選擇為“JTAG”,並在“Program/Configure”複選框內打勾,便可點擊“start”按鈕,開始下載。

5在FPGA上檢驗是否為12進位。

三.4位元字頻率計設計

1.設計要求

設計4位元字頻率計,測頻範圍0000~9999Hz。用DEII實驗板驗證。

2.數字頻率計的工作原理

當閘門訊號(寬度為1s的正脈衝)到來時,閘門開通,被測訊號通過閘門送到計數器,計數器開始計數,當閘門訊號結束時,計數器停止計數。由於閘門開通時間為1s,計數器的數值就是被測訊號頻率。為了使測得的頻率值準確,在閘門開通之前,計數器必須清零。為了使顯示電路穩定的顯示頻率值,計數器和顯示電路之間加了鎖存器,當計數器計數截止,將計數值通過鎖存訊號送到鎖存器。

控制電路在時基電路的控制下產生三個訊號:閘門訊號,鎖存訊號和清零訊號。

圖2 數字頻率計原理框圖

圖3 數字頻率計原理框圖工作時序

3.數字頻率計頂層原理圖設計

圖中總共有四個不同的功能模組:CNT10,LATCH4,DECODER和CONTROL模組。

1四個十進位計數器CNT10組成10000進位計數器,是頻率計的測量範圍達到0-9999Hz;

2LATCH4模組用於鎖存計數器計數結果;

3DECODER模組將計數器輸出的8421BCD碼轉換為7段顯示碼。

4CONTROL模組為頻率計的控制器,產生滿足時序要求的控制訊號。

圖4 數字頻率計頂層原理圖

4.數字頻率計底層模組模擬

(1)計數器模組模擬

Clk:時基訊號

Clr:清零訊號

Cs:片選訊號,cs=1時才會計數。

圖5 計數器模組模擬結果

(2)鎖存器模組模擬

當le=1時將dd訊號鎖存到qq中。

圖6 鎖存器模組模擬結果

(3)顯示解碼模組模擬結果

將din傳入的8421BCD碼轉換成7段顯示碼

圖7 顯示解碼模組模擬結果

(4)控制模組模擬結果

控制電路在時基電路的控制下產生三個訊號:閘門訊號,鎖存訊號和清零訊號。

圖8 控制模組模擬結果

5.數字頻率操作過程

1.開啟QuartusII軟體,建立wizard,選取器件為CycloneIIEP2C35F672C8。建立VHDL File,建立cnt10,latch4,decoder,control四個模組.

2. 編寫VHDL代碼.

CNT10:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity cnt10 is

port(clk:in std_logic;

clr:in std_logic;

cs :in std_logic;

qq :buffer std_logic_vector(3 downto 0);

co :out std_logic);

end cnt10;

architecture one of cnt10 is

begin

process(clk,clr,cs)

begin

if (clr='1') then

qq<="0000";

elsif (clk'event and clk='1') then

if (cs='1') then

if (qq=9) then

qq<="0000";

else

qq<=qq+1;

end if;

end if;

end if;

end process;

process(qq)

begin

if (qq=9) then

co<= '0';

else

co<='1';

end if;

end process;

end;

Latch4:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY LATCH4 IS

PORT(le: IN STD_LOGIC;

dd: IN STD_LOGIC_VECTOR(3 DOWNTO 0);

qq: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));

END LATCH4;

ARCHITECTURE one OF LATCH4 IS

BEGIN

PROCESS(le,dd)

BEGIN

IF (le='1') THEN

qq<=dd;

END IF;

END PROCESS;

END one;

Decoder:

library ieee;

use ieee.std_logic_1164.all;

entity decoder is

port(din:in std_logic_vector(3 downto 0);

led7s:out std_logic_vector(6 downto 0)

);

End;

architecture one of decoder is

begin

process(din)

begin

case din is

when "0000"=>led7s<="1000000";

when "0001"=>led7s<="1111001";

when "0010"=>led7s<="0100100";

when"0011"=>led7s<="0110000";

when"0100"=>led7s<="0011001";

when"0101"=>led7s<="0010010";

when"0110"=>led7s<="0000010";

when"0111"=>led7s<="1111000";

when"1000"=>led7s<="0000000";

when"1001"=>led7s<="0010000";

when"1010"=>led7s<="0001000";

when"1011"=>led7s<="0000011";

when"1100"=>led7s<="1000110";

when"1101"=>led7s<="0100001";

when"1110"=>led7s<="0000110";

when"1111"=>led7s<="0001110";

when others=>led7s<=null;

end case;

end process;

end;

Control:

library ieee;

use ieee.std_logic_1164.all;

entity control is

port(clk: in std_logic;

cs,clr,le: out std_logic);

end control;

architecture behav of control is

signal current_state,next_state:std_logic_vector(3 downto 0);

constant st0:std_logic_vector :="0011" ;

constant st1:std_logic_vector :="0010";

constant st2:std_logic_vector :="0110";

constant st3:std_logic_vector :="0111";

constant st4:std_logic_vector :="0101";

constant st5:std_logic_vector :="0100";

constant st6:std_logic_vector :="1100";

constant st7:std_logic_vector :="1101";

constant st8:std_logic_vector :="1111";

constant st9:std_logic_vector :="1110";

begin

com1:process(current_state)

begin

case current_state is

when st0=>next_state<=st1; clr<='1'; cs<='0'; le<='0';

when st1=>next_state<=st2; clr<='0'; cs<='1'; le<='0';

when st2=>next_state<=st3; clr<='0'; cs<='1'; le<='0';

when st3=>next_state<=st4; clr<='0'; cs<='1'; le<='0';

when st4=>next_state<=st5; clr<='0'; cs<='1'; le<='0';

when st5=>next_state<=st6; clr<='0'; cs<='1'; le<='0';

when st6=>next_state<=st7; clr<='0' ; cs<='1'; le<='0';

when st7=>next_state<=st8; clr<='0'; cs<='1'; le<='0';

when st8=>next_state<=st9; clr<='0'; cs<='1'; le<='0';

when st9=>next_state<=st0; clr<='0'; cs<='0'; le<='1';

when others=>next_state<=st0; clr<='0'; cs<='0'; le<='0';

end case;

end process com1;

reg: process(clk)

begin

if (clk'event and clk='1') then

current_state<=next_state;

end if;

end process reg;

end behav;

3.對各個子模組進行編譯,若出現錯誤,則首先排查VHDL是否正確。

4.上一步成功編譯後,再進行模擬。建立Vector Waveform File,確定模擬時間(End Time)和網格寬度(Grid Size),在列表處加入輸入輸出節點(Insert Node Or Bus),並配置輸入波形,最後開始模擬(Start Simulation)。

5.模擬結果正確後,產生相應的模組符號,以便在頂層圖中使用。

6.各個子模組完成後,建立fmeter.bdf.將各個子模組匯入到檔案中,並按照頂層原理圖所示,正確布局和連接線路。設定fmeter.bdf為頂層並編譯。

7.上一步正確後,開始分配引腳,開啟Pin選項,為每一個Node設定Location,設定規則參考書本附錄。

8.開啟Programmer,將fmeter的配置下載到CycloneII晶片內,在FPGA面板上運行。檢查是否出現錯誤,若沒有,則實驗順利完成。

四.實驗體會

1. 碰到的問題

1編寫完VHDL代碼後,對其編譯,始終顯示錯誤,檢查代碼無誤,並重新建立wizard後,仍然無法通過編譯。

解決:應當建立一個獨立的檔案夾,將檔案儲存體在裡面,否則,同級目錄下出現其他不相關的檔案,會影響編譯。

2將內容下載到FPGA後,無法正常運行。

解決:檢查配置時發現,晶片型號配置錯誤,應該為CycloneIIEP2C35F672C8。

3編寫fmeter.bdf後,編譯,但無法通過。

解決:檢查錯誤時發現,存在多餘的線頭,部分連線沒有真正連上。

2. 實驗收穫

3. 建議

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.