?

基于FPGA 的參數可調多功能移位寄存器設計與實現

2022-06-23 01:08吳靜瑜肖順文雷小英陳韻文
無線互聯科技 2022年7期
關鍵詞:左移右移選擇器

吳靜瑜,肖順文,雷小英,鄭 瑞,陳韻文

(西華師范大學 電子信息工程學院,四川 南充 637009)

0 引言

數字系統中,移位寄存器是常用的重要器件之一。除了作為移位寄存器外,還可用它來組成脈沖發生器、數據轉換器、計數器和累加器等[1]。在數字電子電路設計過程中,固定參數的移位寄存器在使用上受到了一定限制,對參數可調的需求越來越高。FPGA 器件是專用集成電路中的1 種半定制電路,能有效地解決原有器件門電路數較少的問題,可重復編程,且在數字電路設計領域中應用廣泛[2]。本文設計了基于FPGA 的參數可調的多功能移位寄存器,實現多參數多種移位方式的移位功能。

1 系統電路結構及工作原理

整個系統主要由多路選擇器模塊、參數可調帶進位循環左移移位寄存器、參數可調帶進位循環右移移位寄存器、參數可調自循環左移移位寄存器、參數可調自循環右移移位寄存器和輸入輸出模塊構成,系統電路結構的設計,如圖1 所示[3]。通過設置可調參數S的數字來確定4 個移位寄存器的數據輸入Din 和數據輸出DOUT 的位數[4]。多路選擇器根據電路的需要可選擇當前移位寄存器為帶進位循環左移移位寄存器、帶進位循環右移移位寄存器、自循環左移移位寄存器、自循環右移移位寄存器等四種之一。整個電路實現可調參數移位寄存器的多種移位功能。

圖1 系統電路結構

2 系統模塊設計

本文設計的參數可調多功能移位寄存器是用來實現對不同參數的移位寄存器進行帶進位循環左移、帶進位循環右移、自循環左移、自循環右移等功能。

2.1 多路選擇器

所設計的參數可調移位寄存器采納并入串出的方式,具有帶進位循環左移、帶進位循環右移、自循環左移、自循環右移4 種功能。因此還需使用多路選擇器來實現功能的切換。這里用一個八選一多路選擇器來實現該功能[5]。設a,b,c 為八選一多路選擇器的輸入信號,多路選擇器的值與對應功能,如表1 所示。

表1 多路選擇器的值與對應功能

2.2 參數可調多功能移位寄存器

系統設計選擇的移位方式是不同的,以下是各功能移位寄存器的具體實現[6]。

2.2.1 帶進位循環左移移位寄存器

帶進位循環左移,通過進位輸入端輸入待進位的數據C0,把輸入數據的各個二進制位向左移動S 位,再將進位數據C0 依次移到右端空出的位上,在每個時鐘上升沿到來時,進行重復操作。其中,REGn 為內部信號,用它暫存輸入的數據,無方向性;CY 是進位輸入。先把輸入的數據DIN 傳遞給REGn,再通過MD 選擇不同的移位方式進行移位。該操作完成后,將移位之后的數再通過REGn 傳遞到DOUT 并輸出。代碼如下:

2.2.2 帶進位循環右移移位寄存器

帶進位循環右移,就是通過進位輸入端輸入待進位的數據C0,把輸入數據的各個二進制位向右移動S位,再將進位數據C0 依次移到左端空出的位上,在每個時鐘上升沿到來時,進行重復操作。代碼如下:

2.2.3 自循環左移移位寄存器

自循環左移,就是把輸入數據的各個二進制位向左移動S 位,再把從S 左端移出的每1 位順次移動至右端空出的位置上,在每個時鐘上升沿到來時,進行重復操作。代碼如下:2.2.4 自循環右移移位寄存器

自循環右移,就是把輸入數據的各個二進制位向右移動S 位,再把從S 右端移出的每1 位順次移動至左端空出的位置上,在每個時鐘上升沿到來時,進行重復操作。代碼如下:

3 系統仿真測試與分析

3.1 參數可調多功能移位寄存器系統電路

本系統采用傳統的自上向下的設計理念,前面已經完成了對各個模塊的設計,因此只需要將各個模塊進行總體的整合即可得到整個系統[7]。系統頂層電路,如圖2 所示。

圖2 系統頂層電路

以8 位多功能移位寄存器為例,系統頂層電路的端口描述,如表2 所示。

表2 系統頂層電路的端口描述

3.2 系統仿真測試與分析

本設計使用多路選擇器及移位功能模塊來完成可調參數移位寄存器的系統功能[8]。首先,從外部設置1個參數。其次,通過輸入端口輸入對應數據和進位標志,再經過多路選擇器選擇所需的移位方式。最后,輸出實現對應移位功能后的數據,用ModelSim 進行仿真。以8 位移位寄存器為例,則此時可調參數S 設定為8,并設DIN 為01010101,如圖3 所示。

圖3 8 位移位寄存器多功能仿真結果

(1)當MD 為000(置數操作),持續了1 個時鐘周期,當第 1 個時鐘上升沿降臨時,輸出 DOUT為01010101。

(2)當MD 為001(帶進位循環左移),進位輸入C0為0,持續了3 個時鐘周期,進行移位的數應該是上一個輸出DOUT,此時DIN 為01010101。每遇到1 個時鐘上升沿,就執行一次移位功能,這里進行了3 次移位;當第2 個時鐘上升沿降臨時,DOUT 為10 101010;當第3 個時鐘上升沿降臨時,DOUT 為01 010100;當第4個時鐘上升沿降臨時,DOUT 為10101000。

(3)當MD 為010(帶進位循環右移),進位輸入C0為1,持續了3 個時鐘周期,進行移位的數應該是上一個輸出DOUT,此時DIN 為10101000。每遇到1 個時鐘上升沿,就執行一次移位功能,這里進行了3 次移位。當第5 個時鐘上升沿來臨時,DOUT 為11 010100;當第6 個時鐘上升沿來臨時,DOUT 為11 101010;當第7 個時鐘上升沿來臨時,DOUT 為11110101。

(4)當MD 為011(自循環左移),持續了3 個時鐘周期,進行移位的數應該是上一個輸出DOUT,此時DIN 為11110101。每遇到1 個時鐘上升沿,就執行一次移位功能,這里進行了3 次移位。當第8 個時鐘上升沿來臨時,DOUT 為11 101011;當第9 個時鐘上升沿來臨時,DOUT 為11 010111;當第10 個時鐘上升沿來臨時,DOUT 為10101111。

(5)當MD 為100(自循環右移),持續了3 個時鐘周期,進行移位的數應該是上一個輸出DOUT,此時DIN 為10101111。每遇到1 個時鐘上升沿,就執行一次移位功能,這里進行了3 次移位。當第11 個時鐘上升沿到來時,DOUT 為11 010111;當第12 個時鐘上升沿來臨時,DOUT 為11 101011;當第13 個時鐘上升沿到來時,DOUT 為11110101。

經仿真測試所得的結果表明該設計達到了參數可調多功能移位寄存器的要求。

4 結語

本系統是基于FPGA 開發平臺,使用VHDL 語言對不同移位功能進行編寫,實現參數可調移位寄存器的多種功能。所實現的參數可調和多種移位功能都是對一般移位寄存器進行進一步的優化與完善,增強了設計的靈活性和資源的可配性,減小了電路的復雜性。

猜你喜歡
左移右移選擇器
華容道玩法大解密
太極拳養生八式(上)
DIV+CSS網頁布局初探
四選一數據選擇器74LS153級聯方法分析與研究
雙四選一數據選擇器74HC153的級聯分析及研究
一種自動分析CSS的改進方法研究
BMH2C單模匹配算法的研究與改進
開懷一笑
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合