《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 其他 > FPGA教學(xué)——移位寄存器(左移、右移、雙向)的Verilog實(shí)現(xiàn)

FPGA教學(xué)——移位寄存器(左移、右移、雙向)的Verilog實(shí)現(xiàn)

2022-09-06
來源:FPGA設(shè)計(jì)論壇
關(guān)鍵詞: 移位寄存器 Verilog

移位寄存器(左移、右移、雙向)的Verilog實(shí)現(xiàn)

移位寄存器的功能和電路形式較多,按移位方向分有左移、右移、和雙向移位寄存器;按接收數(shù)據(jù)方式分為串行輸入和并行輸入;按輸出方向分為串行輸出和并行輸出。

如果將若干個(gè)觸發(fā)器級(jí)聯(lián)成如下圖所示電路,則構(gòu)成基本的移位寄存器。圖中是一個(gè)4位移位寄存器,串行二進(jìn)制數(shù)據(jù)從輸入端Dsi輸入,左邊觸發(fā)器的輸出作為右鄰觸發(fā)器的數(shù)據(jù)輸入。若將串行數(shù)碼D3D2D1D0從高位(D3)至低位(D0)按時(shí)鐘脈沖間隔依次送到Dsi端,經(jīng)過第一個(gè)時(shí)鐘脈沖后,Q0=D3。由于跟隨D3后面的是D2,因此經(jīng)過第二個(gè)時(shí)鐘脈沖后,觸發(fā)器FF0的狀態(tài)移入觸發(fā)器FF1而FF0轉(zhuǎn)變?yōu)樾碌臓顟B(tài),即Q1=D3,Q0=D2。以此類推,輸入數(shù)碼依次由左側(cè)觸發(fā)器移到右側(cè)觸發(fā)器。經(jīng)過4個(gè)時(shí)鐘脈沖后,4個(gè)觸發(fā)器的輸出狀態(tài)Q3Q2Q1Q0與輸入數(shù)碼D3D2D1D0相對(duì)應(yīng)。這樣,就將串行輸人數(shù)據(jù)轉(zhuǎn)換為并行輸出數(shù)據(jù)Dpo。

微信圖片_20220906173212.png

一般來說,N位移位寄存器要由N個(gè)觸發(fā)器構(gòu)成,需要N·Tcp來完成串行到并行的數(shù)據(jù)轉(zhuǎn)換,同樣也需要N?Tcp來實(shí)現(xiàn)并行到串行的數(shù)據(jù)輸出。這里,Tcp為時(shí)鐘周期。從上述操作可以看出,移位寄存器只能用脈沖邊沿敏感的觸發(fā)器,而不能用電平敏感的鎖存器來構(gòu)成,因?yàn)樵跁r(shí)鐘脈沖高電平期間,鎖存器輸出跟隨輸入變化的特性將使移位操作失去控制。顯然,移位寄存器屬于同步時(shí)序電路。

1.基本移位

首先說明“由于國家標(biāo)準(zhǔn)規(guī)定,邏輯圖中最低有效位(LSB)到最高有效位(MSB)的電路排列順序應(yīng)從上到下,從左到右。因此定義移位寄存器中的數(shù)據(jù)從低位觸發(fā)器移向高位為右移,反之則為左移。這一點(diǎn)與通常計(jì)算機(jī)程序中規(guī)定相反,后者從自然二進(jìn)制數(shù)的排列考慮,將數(shù)據(jù)移向高位定義為左移,反之為右移。”此內(nèi)容摘自《電子技術(shù)基礎(chǔ)-數(shù)字部分》康華光主編教材。


module shifter( din, clk, rst, dout,done);

input din, clk, rst;

output [7:0] dout;

output reg done; //完成移位

reg [7:0] dout;

reg [3:0] cnt;

always @(posedge clk)

begin

if(rst) //清零

dout <= 8’b0;

else if(cnt<=4’d7)

begin

dout<=dout>>1; //左移

dout[7]<=din;

/*dout <= dout<<1;

dout[0] <= din; */ //右移

end

else

dout<=dout;

end


always@(posedge clk)

begin

if(rst)

  begin

cnt<=4'd0;

done<=1'b0;

end

else if(cnt==4'd7)

begin

cnt<=4'd0;

done<=1'b1;

end

else begin

cnt<=cnt+1'b1;

done<=1'b0;

end

end


endmodule


仿真結(jié)果圖

微信圖片_20220906173731.png

2.雙向移位

雙向移位實(shí)現(xiàn)數(shù)據(jù)保持、右移、左移、并行置數(shù)、并行輸出。

module two_way(

input clk,

input rst,

input s0,s1, //選擇輸入端口

input din1,din2, //串行數(shù)據(jù)輸入

input [3:0] d, //并行數(shù)據(jù)輸入

output reg [3:0] q //輸出端口

);


always@(posedge clk or negedge rst)

begin

if(!rst)

q<=4'd0;

else begin

case({s1,s0})

2'b00:  q<=q;  //輸出保持不變

2'b01:  q<={q[2:0],din1};  //右移

2'b10:  q<={din2,q[3:1]};  //左移

2'b11:  q<=d;         //并行置數(shù)

endcase

end

end


endmodule

微信圖片_20220906174004.png

仿真結(jié)果圖

總結(jié)一般掌握左移、右移方法即可,并根據(jù)實(shí)際需求加以應(yīng)用,串并轉(zhuǎn)換也適用。


 更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<

微信圖片_20210517164139.jpg


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 三级毛片在线免费观看| 亚洲成在人线在线播放无码| 黑人操亚洲美女| 夫不再被公侵犯美若妻| 久久精品男人影院| 激情综合丝袜美女一区二区| 国产乱理伦片在线观看大陆| **一级一级毛片免费观看| 娇小性色xxxxx中文| 久久午夜宫电影网| 欧美又大粗又爽又黄大片视频 | 国产妇乱子伦视频免费| 97精品在线播放| 成人免费看黄20分钟| 久久精品国产99久久久| 欧美日韩一区二区三区自拍| 公天天吃我奶躁我的在线观看| 青青青国产视频| 国产精品一级毛片不收费| AAA日本高清在线播放免费观看| 我要打飞华人永久免费| 久久精品国产只有精品66| 欧美日韩一区二区三区麻豆| 俺也去在线观看视频| 羞羞的视频在线免费观看| 国产国产人免费人成免费视频| 你懂的网址免费国产| 在线小视频国产| 一二三四在线观看免费中文动漫版 | 亚洲大成色www永久网址| 在线亚洲小视频| 一个人看的www免费高清| 无码中文字幕日韩专区| 久久精品国产99久久99久久久| 欧美在线第一二三四区| 亚洲精品自在在线观看| 精品久久人人妻人人做精品 | 国产传媒在线观看视频免费观看| 你懂的免费视频| 国产精品高清一区二区人妖| av免费不卡国产观看|