《FPGA全程進階---實戰演練》第五章 基於74HC595的LED操作


1基礎理論部分

1.1分頻

  分頻,是的,這個概念也很重要。分頻是指將一單一頻率信號的頻率降低為原來的1/N,就叫N分頻。實現分頻的電路或裝置稱為“分頻器”,如把33MHZ的信號2分頻得到16.5MHZ的信號,3分頻得到11MHZ的信號,10分頻得到3.3MHZ的信號。

  分頻主要是相對於主晶振來說,用不到那么高的頻率,開發板一般根據具體需要會加入晶振,一般若是功耗較高可選用50MHz,其他情況可以相對調整,如24MHz等等。那么分頻的典型應用,二分頻,四分頻,八分頻,還有任意分頻。

  對於分頻,我們可以利用quartus ii 自帶的PLL進行分頻,這樣會占用一定的資源,也可以利用計數器實現一定的分頻,注意,FPGA中不同於其他的CPU,沒有計時器的概念,只有計數器。

1.2 LED

  LED(light emitting diode),發光二極管,簡稱LED,是一種能夠將電能轉化成可見光的固態的半導體器件,可以直接把電轉換成光。可以用在電路及儀器中作指示燈,或者組成文字或數字顯示等。有不同化合物制成的二極管如砷,鎵,磷等化合物制成,不同的化合物組合會顯示不同顏色的光。

  在設計LED的驅動電路時,不能直接接到3.3V或者5V來點亮,LED有額定電流,超過這個額定電流,LED就會燒掉,反接也會燒掉。一般的LED的額定電流從10mA~1A不等。FPGA開發采用的LED主要是貼片0805或者0603等,額定電路一般從10mA~30mA.

1.3 74HC595

  開發板上面的LED控制是用串入並出/串出的移位寄存器74HC595芯片,芯片在電路中的接入情況如圖5.1所示,實物圖如圖5.2所示。其中MR引腳直接接高電平,不進行復位。串出引腳9不接,不進行串出引腳的使用。輸出使能引腳13直接接地,手冊上建議。11和12引腳分別為移位寄存器時鍾輸入和存儲時鍾輸入,分別引出。

wps769.tmp

圖5.1 LED部分電路圖

wps9EB.tmp

圖5.2 實物圖

2 verilog代碼實現部分

2.1 74HC595 控制部分

wps9FB.tmp

  14行定義了一個全局參數WIDTH = 8,用來控制程序下面所有的有關於數量的使用。

wpsA0C.tmp

  59行和60行分別定義了時鍾信號和時鍾使能信號,其中時鍾信號sclk時鍾周期前半段為低電平,后半段為高電平,可以實現對數據的中間采樣,時鍾使能信號led_time可以控制數據和時鍾對齊。48行的state是一個狀態改變的寄存器,只要數據一更新,state就有效。

wpsA1C.tmp

  75行定義了update_input信號用來檢測輸入數據的變化。

wpsA2D.tmp

  狀態轉換部分,在case語句中先檢測state的初始位,然后進入循環操作,檢測update_input是否使能,使能更新state,不使能保持state,更新后開始輸出位數計數器led_cnt的計數

wpsA4D.tmp

  在121到123行,對輸出的三路信號進行了約束限制,這種方法值的借鑒,在用不到時不輸出信號,用到時輸出信號,最大量的節省時鍾。Led_data_out是先從高位輸出到低位。

2.2 LED數據產生部分

wpsB68.tmp

  在模塊聲明處,仍舊使用全局定義變量,控制模塊中常量的使用。

wpsB78.tmp

  計數模塊,產生時鍾使能信號。

wpsBB8.tmp

  Reg型變量Led_out_cnt是用來控制LED變化, 每當時鍾信號使能開始計數,板卡上面一共有8個LED,所以計數8個即可。

wpsBC8.tmp

  LED解碼部分,通過上面的led_out_cnt信號進行解碼,控制LED的流水操作。

3 modelsim驗證部分

3.1 led_generate 模塊仿真

wpsBD9.tmp

  43行產生時鍾信號,通過PERIOD進行周期控制。49~51產生復位信號,當時鍾兩次下降沿后復位信號拉高。56行用來監測led_out輸出的時間,生成的腳本文件如圖5.3所示。

wpsBEA.tmp

圖5.3仿真波形

  圖5.4是利用腳本文件生成,可以觀察到實現了流水功能,且時間間隔1s;

wpsC0A.tmp

圖5.4 腳本生成文件

3.2 led_74HC595 模塊仿真

wpsC0B.tmp

  前半部分和上述都一樣,可以作為固定部分,大家可以自行復制即可。59行到63行增加了系統輸入信號初始化部分。在輸入信號輸入前,最好最安全就是進行一次初始化。

wpsC1B.tmp

  75行到87行是對輸入進行模擬輸入,並監測led_data-out信號,輸出的結果如圖5.5所示,由圖可以看到時間間隔為120ns。

  圖5.6是仿真波形,可以看到時鍾led_sclk每次采樣在輸入信號的正中間位置,最大程度保證采樣可靠。

wpsC4B.tmp

圖5.5 腳本文件

wpsC4C.tmp

圖5.6 仿真波形


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM