国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Problem 80-89(觸發器和鎖存器(1))

OpenFPGA ? 來源:OpenFPGA ? 作者:OpenFPGA ? 2022-11-10 10:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

HDLBits: 在線學習 SystemVerilog(十四)-Problem 80-89(觸發器和鎖存器(1))

HDLBits 是一組小型電路設計習題集,使用 Verilog/SystemVerilog 硬件描述語言 (HDL) 練習數字硬件設計~

網址如下:

https://hdlbits.01xz.net/

關于HDLBits的Verilog實現可以查看下面專欄:

https://www.zhihu.com/column/c_1131528588117385216

縮略詞索引

  • SV:SystemVerilog

從今天開始新的一章-時序電路,包括觸發器、計數器、移位寄存器、狀態機等。

今天更新觸發器和鎖存器,這也是FPGA部分需要了解的基礎部分。

觸發器和鎖存器

觸發器全知道

FPGA的設計中為什么避免使用鎖存器

Problem 80-Dff

SystemVerilog中程序塊的使用

SystemVerilog-程序塊 (procedural blocks)

題目說明

D 觸發器是一個電路,存儲 1bit 數據,并定期地根據觸發器的輸入(d)更新這 1 bit 數據,更新通常發生在時鐘上升沿(clk)。存儲的數據會通過輸出管腳(q)輸出。

1d06180c-6091-11ed-8abf-dac502259ad0.png
圖片來自HDLBits

本題要求利用always程序塊創建一個D觸發器。

模塊端口聲明

moduletop_module(
inputclk,//Clocksareusedinsequentialcircuits
inputd,
outputregq);

題目解析

moduletop_module(
inputlogicclk,//Clocksareusedinsequentialcircuits
inputlogicd,
outputlogicq);//

//Useaclockedalways_ffblock
//copydtoqateverypositiveedgeofclk
//Clockedalways_ffblocksshouldusenon-blockingassignments

always_ff@(posedgeclk)begin
q<=?d?;
????end
endmodule

1d182c04-6091-11ed-8abf-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

1d27194e-6091-11ed-8abf-dac502259ad0.png

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

Problem 81-Dff8

題目說明

實現 8 個 D 觸發器。

模塊端口聲明

moduletop_module(
inputclk,
input[7:0]d,
output[7:0]q
);

題目解析

不需要將上面的電路復制八遍,只需將輸入輸出的位寬提高到八位即可,綜合器會幫我們實現我們需要的8個觸發器。

moduletop_module(
inputlogicclk,
inputlogic[7:0]d,
outputlogic[7:0]q
);

always_ff@(posedgeclk)begin
q<=?d?;
????end
endmodule

1d47aa6a-6091-11ed-8abf-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

1d551506-6091-11ed-8abf-dac502259ad0.png

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

Problem 82-Dff8r

題目說明

在上一題基礎上加上同步復位電路。

模塊端口聲明

moduletop_module(
inputclk,
inputreset,//Synchronousreset
input[7:0]d,
output[7:0]q
);

題目解析

這題難度不大,需要我們舉一反三:明白同步復位和異步復位。

對于電路中的時序元件,把復位信號受到時鐘的控制和復位信號不受時鐘的控制兩種電路分別稱為同步復位電路和異步復位電路。

moduletop_module(
inputlogicclk,
inputlogicreset,//Synchronousreset
inputlogic[7:0]d,
outputlogic[7:0]q
);

always_ff@(posedgeclk)begin
if(reset)q<=?'0;
else
q<=??d?;
????end
endmodule


1d7e6032-6091-11ed-8abf-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

1d98bdf6-6091-11ed-8abf-dac502259ad0.png

在vivado中綜合的結果如下:

1fe4eaf8-6091-11ed-8abf-dac502259ad0.png

其中,FDRE:D Flip-Flop with Clock Enable and Synchronous Reset 帶使能功能的同步復位D觸發器。

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

Problem 83-Dff8p

題目說明

在上一題同步復位基礎上,觸發器必須復位時候為 0x34 而不是零。所有 DFF 都應由clk的下降沿觸發。

模塊端口聲明

moduletop_module(
inputclk,
inputreset,
input[7:0]d,
output[7:0]q
);

題目解析

moduletop_module(
inputlogicclk,
inputlogicreset,//Synchronousreset
inputlogic[7:0]d,
outputlogic[7:0]q
);

always_ff@(negedgeclk)begin
if(reset)q<=?8'h34;
else
q<=??d?;
????end
endmodule

200544ce-6091-11ed-8abf-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

2015ece8-6091-11ed-8abf-dac502259ad0.png

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

Problem 84-Dff8ar

題目說明

本題中的觸發器引入了異步復位。當異步復位端有效時,觸發器的輸出復位為 0 。

模塊端口聲明

moduletop_module(
inputclk,
inputareset,//activehighasynchronousreset
input[7:0]d,
output[7:0]q
);

題目解析

moduletop_module(
inputlogicclk,
inputlogicareset,//activehighasynchronousreset
inputlogic[7:0]d,
outputlogic[7:0]q
);
always_ff@(posedgeclkorposedgeareset)begin
if(areset)q<=?'0;
else
q<=??d?;
????end

endmodule
20556396-6091-11ed-8abf-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

207464b2-6091-11ed-8abf-dac502259ad0.png

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

下圖是Vivado中綜合的結果:

209a1784-6091-11ed-8abf-dac502259ad0.png

FDC :: D Flip-Flop with Asynchronous Clear 帶異步清除D觸發器;FDCE:D Flip-Flop with Clock Enable and AsynchronousReset 帶使能功能的異步清除D觸發器,相比與FDRE將同步復位變化成異步復位,當同步復位接口為高電平時,直接觸發寄存器復位(置0)。

這一題就結束了。

Problem 85-Dff16e

題目說明

創建一個 16 路 D觸發器。部分情況下,只需要多路觸發器中的一部分觸發器工作,此時可以通過 ena 使能端進行控制。使能端 ena 信號有效時,觸發器在時鐘上升沿工作。

byteena 使能信號以 byte 為單位管理 8 路觸發器在時鐘邊沿觸發與否。byteena [1] 作為 d[15:8] 高位字節的使能端,byteena [0] 則控制 d 的低位字節。

resetn 為同步,低電平有效復位信號。

模塊端口聲明

moduletop_module(
inputclk,
inputresetn,
input[1:0]byteena,
input[15:0]d,
output[15:0]q
);

題目解析

moduletop_module(
inputlogicclk,
inputlogicresetn,
inputlogic[1:0]byteena,
inputlogic[15:0]d,
outputlogic[15:0]q
);

always_ff@(posedgeclk)begin
if(!resetn)q<=?'0;
elsebegin
case(byteena)
2'b01:
q<=?{q[15:8],?d[7:0]};
????????????????2'b10:
q<=?{d[15:8],?q[7:0]};
????????????????2'b11:
q<=?d;
????????????????2'b00:
q<=?q;
????????????endcase
????????end
????end
endmodule


20b73e86-6091-11ed-8abf-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

20d72660-6091-11ed-8abf-dac502259ad0.png

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網站會對比這兩個波形,一旦這兩者不匹配,仿真結果會變紅。

這一題就結束了。

Problem 86-m2014 q4a

題目說明

實現一個如下的電路:

214d5a74-6091-11ed-8abf-dac502259ad0.png
圖片來自HDLBits

從看到圖片上的電路就應該認出這個基本元器件-鎖存器,同D觸發器對比這個元件沒有 clk 端口,取而代之的是 ena 端口。

1d06180c-6091-11ed-8abf-dac502259ad0.png
圖片來自HDLBits-D觸發器

鎖存器的特征在于,相較于 D觸發器的觸發事件發生于 clk 時鐘的邊沿,鎖存器鎖存的觸發事件發生于使能端 ena 的電平。

模塊端口聲明

moduletop_module(
inputd,
inputena,
outputq);

題目解析

moduletop_module(
inputlogicd,
inputlogicena,
outputlogicq);

always_latchbegin
if(ena)q<=?d?;
????????else
q<=?q?;
????end
endmodule



從上面的代碼可以看出,SV在硬件描述過程中比Verilog代碼可讀性高很多,一眼就能看出這個電路的功能,而Verilog需要根據描述的功能推測電路功能。

2166bd66-6091-11ed-8abf-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

2180ae60-6091-11ed-8abf-dac502259ad0.png

注意圖中無波形。但是注意圖中的警告,這個在實際使用中非常重要,鎖存器相比觸發器會消耗更多的資源,所以綜合器會在推斷出鎖存器時產生提醒,防止開發者在不想使用鎖存器時,因為代碼風格等原因誤產生了鎖存器。

這一題就結束了。

Problem 87-m2014_q4b

題目說明

實現一個如下的電路:

21af6aca-6091-11ed-8abf-dac502259ad0.png
圖片來自HDLBits

模塊端口聲明

moduletop_module(
inputclk,
inputd,
inputar,//asynchronousreset
outputq);

題目解析

AR 代表 asynchronous reset,所以這是一個帶有異步復位的 D 觸發器。

圖中的三角形代表時鐘,不再用 CLK 標出。

moduletop_module(
inputlogicclk,
inputlogicd,
inputlogicar,//asynchronousreset
outputlogicq);

always_ff@(posedgeclkorposedgear)begin
if(ar)q<=?'0;
else
q<=??d?;
????end
endmodule

21c3003a-6091-11ed-8abf-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

21e58c86-6091-11ed-8abf-dac502259ad0.png

注意圖中無波形。

這一題就結束了。

Problem 88-m2014_q4c

題目說明

實現一個如下的電路:

22059558-6091-11ed-8abf-dac502259ad0.png
圖片來自HDLBits

模塊端口聲明

moduletop_module(
inputclk,
inputd,
inputr,//synchronousreset
outputq);

題目解析

R 代表 synchronous reset。所以這是一個同步復位的D觸發器。

moduletop_module(
inputlogicclk,
inputlogicd,
inputlogicr,//synchronousreset
outputlogicq);

always_ff@(posedgeclk)begin
if(r)q<=?'0;
else
q<=??d?;
????end
endmodule

221b78d2-6091-11ed-8abf-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

222fecf4-6091-11ed-8abf-dac502259ad0.png

注意圖中無波形。

這一題就結束了。

Problem 89-m2014_q4d

題目說明

實現一個如下的電路:

230193e4-6091-11ed-8abf-dac502259ad0.png
圖片來自HDLBits

模塊端口聲明

moduletop_module(
inputclk,
inputin,
outputout);

題目解析

觸發器的輸出 q 和輸入信號 in 一起作為異或門的輸入。

moduletop_module(
inputlogicclk,
inputlogicin,
outputlogicout);

varlogicd;

always_combbegin
d=out^in;
end

always_ff@(posedgeclk)begin
out<=?d?;
????end

endmodule

230fd6b6-6091-11ed-8abf-dac502259ad0.png

點擊Submit,等待一會就能看到下圖結果:

23348628-6091-11ed-8abf-dac502259ad0.png

注意圖中無波形。

這一題就結束了。

總結

今天的幾道題就結束了,對于理解觸發器的非常有幫助,尤其同步復位、異步復位及鎖存器的理解非常有幫助,對于這些簡單的代碼,建議放到實際的EDA工具中跑下綜合,查看一下FPGA具體的實現元器件是什么樣,這樣在后期自己設計代碼時候的理解很有幫助。

最后我這邊做題的代碼也是個人理解使用,有錯誤歡迎大家批評指正,祝大家學習愉快~

代碼鏈接:

https://github.com/suisuisi/SystemVerilog/tree/main/SystemVerilogHDLBits


審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鎖存器
    +關注

    關注

    8

    文章

    956

    瀏覽量

    44944
  • 觸發器
    +關注

    關注

    14

    文章

    2056

    瀏覽量

    63407
  • 代碼
    +關注

    關注

    30

    文章

    4968

    瀏覽量

    73970

原文標題:總結

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    中的時間借用概念與靜態時序分析

    對于基于的設計,靜態時序分析會應用一個稱為時間借用的概念。本篇博文解釋了時間借用的概念,若您的設計中包含
    的頭像 發表于 12-31 15:25 ?5498次閱讀
    <b class='flag-5'>鎖</b><b class='flag-5'>存</b><b class='flag-5'>器</b>中的時間借用概念與靜態時序分析

    SN74HCS574QPWRQ1 8 通道 D 型觸發器

    SN74HCS574QPWRQ18通道D型觸發器產品型號:SN74HCS574QPWRQ1產品品牌:TI/德州儀器產品封裝:TSSOP20產品功能:8通道D型觸發器SN74HCS574QPWRQ
    的頭像 發表于 12-31 11:47 ?644次閱讀
    SN74HCS574QPWRQ<b class='flag-5'>1</b>   8 通道 D 型<b class='flag-5'>觸發器</b>

    施密特觸發器光耦在門鈴系統中的應用

    的KLH11LX型施密特觸發器光耦,憑借5000Vrms高壓隔離能力與1Mbps高速傳輸性能,成為門鈴系統信號處理的理想選擇。在傳統門鈴電路中,按鈕觸發的電平信號易受電磁干
    的頭像 發表于 11-22 08:59 ?318次閱讀
    施密特<b class='flag-5'>觸發器</b>光耦在門鈴系統中的應用

    ?SN74HCS373 Octal透明技術解析與應用指南

    Texas Instruments SN74HCS373/SN74HCS373-Q1八路透明D類包含八個D類
    的頭像 發表于 09-24 10:40 ?827次閱讀
    ?SN74HCS373 Octal透明<b class='flag-5'>鎖</b><b class='flag-5'>存</b><b class='flag-5'>器</b>技術解析與應用指南

    ?TLC59212 8位開漏輸出驅動芯片技術文檔總結

    TLC59212器件是一款8位集電極開路驅動,帶,設計用于5V V~CC~操作。 這些電路是正邊沿觸發的 D 型
    的頭像 發表于 09-03 09:46 ?738次閱讀
    ?TLC59212 8位開漏輸出<b class='flag-5'>鎖</b><b class='flag-5'>存</b>驅動芯片技術文檔總結

    高速施密特觸發器密封光耦合 skyworksinc

    電子發燒友網為你提供()高速施密特觸發器密封光耦合相關產品參數、數據手冊,更有高速施密特觸發器密封光耦合的引腳圖、接線圖、封裝手冊、中文資料、英文資料,高速施密特
    發表于 07-09 18:31
    高速施密特<b class='flag-5'>觸發器</b>密封光耦合<b class='flag-5'>器</b> skyworksinc

    Texas Instruments SN74LVC1G373單D型數據手冊

    Texas Instruments SN74LVC1G373單D型設計用于在1.65V至5.5V V~CC~ 范圍內運行。該器件特別適用于實施I/O端口、緩沖
    的頭像 發表于 07-08 10:16 ?936次閱讀
    Texas Instruments SN74LVC<b class='flag-5'>1</b>G373單D型<b class='flag-5'>鎖</b><b class='flag-5'>存</b><b class='flag-5'>器</b>數據手冊

    密封表面貼裝、高速施密特觸發器光耦合 skyworksinc

    電子發燒友網為你提供()密封表面貼裝、高速施密特觸發器光耦合相關產品參數、數據手冊,更有密封表面貼裝、高速施密特觸發器光耦合的引腳圖、接線圖、封裝手冊、中文資料、英文資料,密封表面
    發表于 07-04 18:37
    密封表面貼裝、高速施密特<b class='flag-5'>觸發器</b>光耦合<b class='flag-5'>器</b> skyworksinc

    用于混合組裝的微型高速施密特觸發器光耦合 skyworksinc

    電子發燒友網為你提供()用于混合組裝的微型高速施密特觸發器光耦合相關產品參數、數據手冊,更有用于混合組裝的微型高速施密特觸發器光耦合的引腳圖、接線圖、封裝手冊、中文資料、英文資料,
    發表于 07-03 18:34
    用于混合組裝的微型高速施密特<b class='flag-5'>觸發器</b>光耦合<b class='flag-5'>器</b> skyworksinc

    一文讀懂Allegro先進磁性開關和

    Allegro 擁有豐富的霍爾效應和隧道磁阻(TMR)開關及產品,可廣泛應用于汽車、工業和消費電子等領域。本應用筆記旨在提供分步選型流程,協助設計師為具體應用場景選擇適配的 Allegro
    的頭像 發表于 06-12 17:26 ?1924次閱讀
    一文讀懂Allegro先進磁性開關和<b class='flag-5'>鎖</b><b class='flag-5'>存</b><b class='flag-5'>器</b>

    施密特觸發器光耦特性

    施密特觸發光電耦合(SchmittTriggerOptocoupler)是一種結合了光耦隔離與施密特觸發特性的器件,晶臺光電推出的KLH11LX系列(如KLH11L1/L2/L3)正
    的頭像 發表于 06-12 10:52 ?1332次閱讀
    施密特<b class='flag-5'>觸發器</b>光耦特性

    如何使用BCTU觸發器進行eMIOS ADC轉換?

    我正在努力更好地了解 ADC 和 eMIOS 硬件觸發器內部的協同作用S32K324我確實對其功能有一些疑問。 因此,eMIOS 通道在 OPWMT 模式下創建其 PWM 信號,在 A 的匹配上設置
    發表于 04-01 08:18

    數字電路—19、主從觸發器

    觸發器:同步RS觸發器(FF2),其狀態由輸入信號決定 從觸發器:同步RS觸發器(FF1),其狀態由主
    發表于 03-26 14:48

    數字電路—17/18、基本RS觸發器

    同步觸發器:基本RS觸發器觸發方式(動作特點):邏輯電平直接觸發。(由輸入信號直接控制) 在實際工作中,要求觸發器按統一的節拍進行狀態更
    發表于 03-26 14:27

    數字電路—16、觸發器

    觸發器是構成時序邏輯電路的基本單元電路。 觸發器具有記憶功能,能存儲一位二進制數碼。
    發表于 03-26 14:21