保持寄存器和输入寄存器的区别_串行移位寄存器74HC595
74HC595是8位串行移位寄存器,其中帶有移位寄存器和存儲寄存器,這兩個寄存器分別采用不同的時鐘控制。串行數據輸入到內部8位移位寄存器然后再并行輸出。
01
74HC595內部結構
如圖所示為74HC595的內部結構圖,首先14引腳DS為串行移位數據線,串行數據由DS處輸入。11號引腳SH_CP為移位寄存器的時鐘輸入。12號引腳ST_CP為存儲寄存器的時鐘輸出。Q7'為級聯輸出端,Q0-Q7為8位數據輸出。
接下來對74HC595的各引腳功能進行描述。
Q0~Q7:8位數據輸出。
OE:使能端,高電平時禁止輸出,此處直接接地。
MR:數據清零端,低電平時將移位寄存器清零,此處直接接高。
Q7':級聯輸出端,級聯時接下一個595的DS端。
DS:串行數據輸入端。
ST_CP:存儲寄存器的時鐘輸入。上升沿時移位寄存器中的數據進入存儲寄存器,下降沿時存儲寄存器中數據保持不變。應用時通常將ST_CP置為低電平,移位結束后再在ST_CP端產生一個正脈沖更新顯示數據。
SH_CP:移位寄存器的時鐘輸入。上升沿時移位寄存器中的數據依次移動一位,即Q0中的數據移到Q1中,Q1中的數據移到Q2中,依次類推;下降沿時移位寄存器中的數據保持不變。
02
74HC595時序圖
例如要傳輸一個8位數據:01001100,DS為串行數據輸入端,只有在SH_CP為下降沿的時刻數據DS波形才能變化,上升沿時讀數據,如圖中的開始處SH_CP為下降沿,此時傳輸DS第一個數據0,接下來一直到結束端處傳輸完成最后一個0。然后只有在ST_CP為上升沿時便會將移位寄存器中的數據copy一份存儲到存儲寄存器中,實現串并轉換。如圖中ST_CP處的上升沿此時檢測到上升沿便開始讀取串行傳輸的數據。
而移位的原理如下圖所示:
寫入的數據在寄存器中依次右移,采用8個時鐘移位,1個時鐘周期進行存儲。在D7端那個將溢出的數據便是在D7'輸出的數據,此處D7'輸出的數據也就是級聯時下一個74HC595的輸入數據。
如圖所示為兩片74HC595的級聯圖。兩片74HC595級聯,共用SH_CP移位寄存器的時鐘線和ST_CP存儲寄存器的時鐘線。
03
程序撰寫
首先便是對各端口進行定義,至于sel位選信號和seg的段選信號是接下來要控制數碼管所用到的,位選是選擇哪一只數碼管進行顯示,段選是要顯示的內容,此處便不加描述。
這部分程序是四分頻,FPGA的外接晶振頻率為50MHz,此處對其四分頻然后使用。
這部分便是使用狀態機來傳輸數據,首先是模擬SH_CP和ST_CP的時序,然后在SH_CP的每一個下降沿處發送一個數據,最后在結尾處給ST_CP一個上升沿,讀取數據實現串并轉換。
仿真部分的程序如圖所示,位選信號sel給一個0000_0001,段選信號給一個1100_0000,接下來看仿真圖。
圖中的3個光標處,前兩個光標之間傳輸的便是seg的信號,后兩個光標之間的信號之間傳輸的便是sel的信號。
總結
以上是生活随笔為你收集整理的保持寄存器和输入寄存器的区别_串行移位寄存器74HC595的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flutter可视化_Flutter 对
- 下一篇: idea前进和后退快捷键_必备技能:ID