一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

移位寄存器的設(shè)計與實現(xiàn)

FPGA設(shè)計論壇 ? 來源:CSDN技術(shù)社區(qū) ? 作者:ECC&SM9 ? 2022-09-06 11:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

1afba39c-2d8d-11ed-ba43-dac502259ad0.png

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

1.基本移位

首先說明“由于國家標(biāo)準(zhǔn)規(guī)定,邏輯圖中最低有效位(LSB)到最高有效位(MSB)的電路排列順序應(yīng)從上到下,從左到右。因此定義移位寄存器中的數(shù)據(jù)從低位觸發(fā)器移向高位為右移,反之則為左移。這一點與通常計算機程序中規(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é)果圖

1b195554-2d8d-11ed-ba43-dac502259ad0.png

2.雙向移位

雙向移位實現(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

1b30969c-2d8d-11ed-ba43-dac502259ad0.png

仿真結(jié)果圖

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

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Verilog
    +關(guān)注

    關(guān)注

    29

    文章

    1367

    瀏覽量

    112305
  • 移位寄存器
    +關(guān)注

    關(guān)注

    3

    文章

    293

    瀏覽量

    22746
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    2039

    瀏覽量

    62151

原文標(biāo)題:移位寄存器(左移、右移、雙向)的Verilog實現(xiàn)

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設(shè)計論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    [4.4.1]--移位寄存器實現(xiàn)序列發(fā)生

    信號發(fā)生
    學(xué)習(xí)電子知識
    發(fā)布于 :2022年12月13日 19:43:12

    55 0806_02 使用移位寄存器實現(xiàn)一行數(shù)據(jù)寄存 - 第1節(jié)

    移位寄存器
    充八萬
    發(fā)布于 :2023年08月19日 17:38:17

    55 0806_02 使用移位寄存器實現(xiàn)一行數(shù)據(jù)寄存 - 第5節(jié)

    移位寄存器
    充八萬
    發(fā)布于 :2023年08月19日 17:41:39

    55 0806_02 使用移位寄存器實現(xiàn)一行數(shù)據(jù)寄存 - 第6節(jié)

    移位寄存器
    充八萬
    發(fā)布于 :2023年08月19日 17:42:29

    用labview模擬擲骰子次數(shù),只能用一個移位寄存器實現(xiàn)

    程序給出擲骰子次數(shù),輸出擲骰子后骰子各面出現(xiàn)的次數(shù)。如果用多個移位寄存器的可以實現(xiàn),也正確。但是用一個移位寄存器實現(xiàn),卻輸出不正確。不知道哪兒錯了?
    發(fā)表于 08-16 21:46

    labview移位寄存器實現(xiàn)閃燈報錯

    必須將循環(huán)內(nèi)部的有效數(shù)據(jù)類型連接至位于循環(huán)右側(cè)邊框的移位寄存器,或者刪除該移位寄存器。怎么理解
    發(fā)表于 10-25 23:29

    Matlab移位寄存器實現(xiàn)

    本文主要介紹Matlab如何實現(xiàn)移位寄存器,首先介紹的是移位寄存器的原理及作用,其次介紹了m序列的生成原理及m序列的matlab 仿真實現(xiàn),最后介紹了Matlab如何
    發(fā)表于 06-20 04:20

    一維數(shù)組自動在末尾添加元素,不使用移位寄存器怎么實現(xiàn)

    一維數(shù)組自動在末尾添加元素,不使用移位寄存器怎么實現(xiàn)比如我有一個字符串 想要存入這個數(shù)組末尾也就是數(shù)組索引3在位置插入字符串a(chǎn),然后在下一循環(huán)又自動添加在數(shù)組索引5當(dāng)中怎么能實現(xiàn),不能用移位寄
    發(fā)表于 04-23 16:41

    寄存器移位寄存器

    寄存器移位寄存器:介紹寄存器原理和移位寄存器的原理及實現(xiàn)
    發(fā)表于 05-20 11:47 ?0次下載

    線性反饋移位寄存器原理與實現(xiàn)

    線性反饋移位寄存器(LFSR)是一個產(chǎn)生二進(jìn)制位序列的機制。這個寄存器由一個初始化矢量設(shè)置的一系列信元組成,最常見的是,密鑰。這個寄存器的行為被一個時鐘調(diào)節(jié)。
    發(fā)表于 12-22 09:37 ?5w次閱讀
    線性反饋<b class='flag-5'>移位寄存器</b>原理與<b class='flag-5'>實現(xiàn)</b>

    移位寄存器實現(xiàn)邊沿檢測的技巧

    本文記錄一下關(guān)于用移位寄存器實現(xiàn)邊沿檢測的技巧。要學(xué)會硬件思維式的“模塊式”讀寫代碼,那么請多看別人的代碼,并用ISE或者VIVADO綜合出來看看。 邊沿檢測 邊沿檢測,顧名思義,就是檢查信號的邊沿
    發(fā)表于 04-15 10:26 ?3512次閱讀

    基于線性反饋移位寄存器實現(xiàn)CMOS電路的低功耗設(shè)計

    另外,在系統(tǒng)工作模式下,應(yīng)用于給定電路的連續(xù)功能輸入矢量具有重要的相關(guān)性,而由LFSR產(chǎn)生的連續(xù)測試模式之間的相關(guān)性很低。因此,在自測試期間會增加電路中節(jié)點的翻轉(zhuǎn)活動,導(dǎo)致功耗增大。
    發(fā)表于 08-11 14:33 ?1664次閱讀
    基于線性反饋<b class='flag-5'>移位寄存器</b><b class='flag-5'>實現(xiàn)</b>CMOS電路的低功耗設(shè)計