99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

HDLBits: 在線(xiàn)學(xué)習(xí) SystemVerilog(十四)-Problem 80-89(觸發(fā)器和鎖存器(1))

HDLBits 是一組小型電路設(shè)計(jì)習(xí)題集,使用 Verilog/SystemVerilog 硬件描述語(yǔ)言 (HDL) 練習(xí)數(shù)字硬件設(shè)計(jì)~

網(wǎng)址如下:

https://hdlbits.01xz.net/

關(guān)于HDLBits的Verilog實(shí)現(xiàn)可以查看下面專(zhuān)欄:

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

縮略詞索引

  • SV:SystemVerilog

從今天開(kāi)始新的一章-時(shí)序電路,包括觸發(fā)器、計(jì)數(shù)器、移位寄存器、狀態(tài)機(jī)等。

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

觸發(fā)器和鎖存器

觸發(fā)器全知道

FPGA的設(shè)計(jì)中為什么避免使用鎖存器

Problem 80-Dff

SystemVerilog中程序塊的使用

SystemVerilog-程序塊 (procedural blocks)

題目說(shuō)明

D 觸發(fā)器是一個(gè)電路,存儲(chǔ) 1bit 數(shù)據(jù),并定期地根據(jù)觸發(fā)器的輸入(d)更新這 1 bit 數(shù)據(jù),更新通常發(fā)生在時(shí)鐘上升沿(clk)。存儲(chǔ)的數(shù)據(jù)會(huì)通過(guò)輸出管腳(q)輸出。

1d06180c-6091-11ed-8abf-dac502259ad0.png
圖片來(lái)自HDLBits

本題要求利用always程序塊創(chuàng)建一個(gè)D觸發(fā)器。

模塊端口聲明

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

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

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

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。

這一題就結(jié)束了。

Problem 81-Dff8

題目說(shuō)明

實(shí)現(xiàn) 8 個(gè) D 觸發(fā)器。

模塊端口聲明

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

題目解析

不需要將上面的電路復(fù)制八遍,只需將輸入輸出的位寬提高到八位即可,綜合器會(huì)幫我們實(shí)現(xiàn)我們需要的8個(gè)觸發(fā)器。

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

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

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

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。

這一題就結(jié)束了。

Problem 82-Dff8r

題目說(shuō)明

在上一題基礎(chǔ)上加上同步復(fù)位電路。

模塊端口聲明

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

題目解析

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

對(duì)于電路中的時(shí)序元件,把復(fù)位信號(hào)受到時(shí)鐘的控制和復(fù)位信號(hào)不受時(shí)鐘的控制兩種電路分別稱(chēng)為同步復(fù)位電路和異步復(fù)位電路。

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

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

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

在vivado中綜合的結(jié)果如下:

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

其中,F(xiàn)DRE:D Flip-Flop with Clock Enable and Synchronous Reset 帶使能功能的同步復(fù)位D觸發(fā)器。

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。

這一題就結(jié)束了。

Problem 83-Dff8p

題目說(shuō)明

在上一題同步復(fù)位基礎(chǔ)上,觸發(fā)器必須復(fù)位時(shí)候?yàn)?0x34 而不是零。所有 DFF 都應(yīng)由clk的下降沿觸發(fā)。

模塊端口聲明

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

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

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

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。

這一題就結(jié)束了。

Problem 84-Dff8ar

題目說(shuō)明

本題中的觸發(fā)器引入了異步復(fù)位。當(dāng)異步復(fù)位端有效時(shí),觸發(fā)器的輸出復(fù)位為 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

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

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

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。

下圖是Vivado中綜合的結(jié)果:

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

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

這一題就結(jié)束了。

Problem 85-Dff16e

題目說(shuō)明

創(chuàng)建一個(gè) 16 路 D觸發(fā)器。部分情況下,只需要多路觸發(fā)器中的一部分觸發(fā)器工作,此時(shí)可以通過(guò) ena 使能端進(jìn)行控制。使能端 ena 信號(hào)有效時(shí),觸發(fā)器在時(shí)鐘上升沿工作。

byteena 使能信號(hào)以 byte 為單位管理 8 路觸發(fā)器在時(shí)鐘邊沿觸發(fā)與否。byteena [1] 作為 d[15:8] 高位字節(jié)的使能端,byteena [0] 則控制 d 的低位字節(jié)。

resetn 為同步,低電平有效復(fù)位信號(hào)。

模塊端口聲明

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

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

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

注意圖中的Ref是參考波形,Yours是你的代碼生成的波形,網(wǎng)站會(huì)對(duì)比這兩個(gè)波形,一旦這兩者不匹配,仿真結(jié)果會(huì)變紅。

這一題就結(jié)束了。

Problem 86-m2014 q4a

題目說(shuō)明

實(shí)現(xiàn)一個(gè)如下的電路:

214d5a74-6091-11ed-8abf-dac502259ad0.png
圖片來(lái)自HDLBits

從看到圖片上的電路就應(yīng)該認(rèn)出這個(gè)基本元器件-鎖存器,同D觸發(fā)器對(duì)比這個(gè)元件沒(méi)有 clk 端口,取而代之的是 ena 端口。

1d06180c-6091-11ed-8abf-dac502259ad0.png
圖片來(lái)自HDLBits-D觸發(fā)器

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

模塊端口聲明

moduletop_module(
inputd,
inputena,
outputq);

題目解析

moduletop_module(
inputlogicd,
inputlogicena,
outputlogicq);

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



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

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

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

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

注意圖中無(wú)波形。但是注意圖中的警告,這個(gè)在實(shí)際使用中非常重要,鎖存器相比觸發(fā)器會(huì)消耗更多的資源,所以綜合器會(huì)在推斷出鎖存器時(shí)產(chǎn)生提醒,防止開(kāi)發(fā)者在不想使用鎖存器時(shí),因?yàn)榇a風(fēng)格等原因誤產(chǎn)生了鎖存器。

這一題就結(jié)束了。

Problem 87-m2014_q4b

題目說(shuō)明

實(shí)現(xiàn)一個(gè)如下的電路:

21af6aca-6091-11ed-8abf-dac502259ad0.png
圖片來(lái)自HDLBits

模塊端口聲明

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

題目解析

AR 代表 asynchronous reset,所以這是一個(gè)帶有異步復(fù)位的 D 觸發(fā)器。

圖中的三角形代表時(shí)鐘,不再用 CLK 標(biāo)出。

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

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

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

注意圖中無(wú)波形。

這一題就結(jié)束了。

Problem 88-m2014_q4c

題目說(shuō)明

實(shí)現(xiàn)一個(gè)如下的電路:

22059558-6091-11ed-8abf-dac502259ad0.png
圖片來(lái)自HDLBits

模塊端口聲明

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

題目解析

R 代表 synchronous reset。所以這是一個(gè)同步復(fù)位的D觸發(fā)器。

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

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

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

注意圖中無(wú)波形。

這一題就結(jié)束了。

Problem 89-m2014_q4d

題目說(shuō)明

實(shí)現(xiàn)一個(gè)如下的電路:

230193e4-6091-11ed-8abf-dac502259ad0.png
圖片來(lái)自HDLBits

模塊端口聲明

moduletop_module(
inputclk,
inputin,
outputout);

題目解析

觸發(fā)器的輸出 q 和輸入信號(hào) in 一起作為異或門(mén)的輸入。

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

點(diǎn)擊Submit,等待一會(huì)就能看到下圖結(jié)果:

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

注意圖中無(wú)波形。

這一題就結(jié)束了。

總結(jié)

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

最后我這邊做題的代碼也是個(gè)人理解使用,有錯(cuò)誤歡迎大家批評(píng)指正,祝大家學(xué)習(xí)愉快~

代碼鏈接:

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


審核編輯 :李倩


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

    關(guān)注

    8

    文章

    925

    瀏覽量

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

    關(guān)注

    14

    文章

    2039

    瀏覽量

    62135
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70697

原文標(biāo)題:總結(jié)

文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    rs觸發(fā)器的工作原理 rs觸發(fā)器和sr觸發(fā)器的區(qū)別

    RS觸發(fā)器是一種雙穩(wěn)態(tài)觸發(fā)器,它有兩個(gè)輸入端:R(Reset)和S(Set),以及兩個(gè)輸出端:Q和Q'(Q的反相)。RS觸發(fā)器的工作原理如下: 輸入條件 :R和S不能同時(shí)為高電平(1
    的頭像 發(fā)表于 10-21 10:06 ?7159次閱讀

    D的基本實(shí)現(xiàn)

    在Verilog HDL中實(shí)現(xiàn)(Latch)通常涉及對(duì)硬件描述語(yǔ)言的基本理解,特別是關(guān)于信號(hào)如何根據(jù)控制信號(hào)的變化而保持或更新其值。
    的頭像 發(fā)表于 08-30 10:45 ?1802次閱讀

    門(mén)控rs觸發(fā)器的區(qū)別是什么

    門(mén)控RS觸發(fā)器是數(shù)字電路中常見(jiàn)的兩種存儲(chǔ)元件,它們?cè)诠δ芎徒Y(jié)構(gòu)上存在一些區(qū)別。 定義和功能 門(mén)控RS
    的頭像 發(fā)表于 08-28 10:22 ?1252次閱讀

    觸發(fā)器的狀態(tài)圖是一樣的嗎?為什么?

    觸發(fā)器的狀態(tài)圖并不完全相同 ,這主要是由于它們的工作原理和觸發(fā)機(jī)制存在差異。
    的頭像 發(fā)表于 08-28 10:20 ?651次閱讀

    怎么用jk觸發(fā)器變成t觸發(fā)器

    JK觸發(fā)器 :具有四種基本的邏輯功能,分別是保持、復(fù)位、設(shè)置和反轉(zhuǎn)。這些功能由J和K兩個(gè)輸入端口的信號(hào)共同決定。 T觸發(fā)器 :具有單一的輸入端口T,用于控制觸發(fā)器的狀態(tài)翻轉(zhuǎn)。當(dāng)T=1
    的頭像 發(fā)表于 08-28 09:41 ?4959次閱讀

    d觸發(fā)器和d的區(qū)別是什么

    D觸發(fā)器和D是數(shù)字電路中常用的兩種存儲(chǔ)元件,它們?cè)诠δ芎蛻?yīng)用上有一定的區(qū)別。 定義和功能 D觸發(fā)器(Data Flip-Flop)是一
    的頭像 發(fā)表于 08-28 09:34 ?2893次閱讀

    sr和rs觸發(fā)器一樣嗎

    SR和RS觸發(fā)器在數(shù)字電路領(lǐng)域都扮演著重要的角色,但它們?cè)诓僮鞣绞?、功能特性以及?yīng)用場(chǎng)景上存在著顯著的差異。 一、定義與基本結(jié)構(gòu) SR
    的頭像 發(fā)表于 08-28 09:31 ?2539次閱讀

    的結(jié)構(gòu)組成及工作原理

    的結(jié)構(gòu)組成 通常由以下幾個(gè)基本部分組成: 觸發(fā)器(Flip-Flop) :觸發(fā)器
    的頭像 發(fā)表于 08-28 09:09 ?1735次閱讀

    t觸發(fā)器與d觸發(fā)器的區(qū)別和聯(lián)系

    )。 1. 觸發(fā)器的基本概念 觸發(fā)器是一種具有記憶功能的電路,它可以存儲(chǔ)一位二進(jìn)制信息。在數(shù)字電路中,觸發(fā)器通常由兩個(gè)穩(wěn)定的工作狀態(tài)組成,即0狀態(tài)和
    的頭像 發(fā)表于 08-11 09:37 ?5560次閱讀

    主從觸發(fā)器是一種能防止什么現(xiàn)象的觸發(fā)器

    主從觸發(fā)器,也被稱(chēng)為主從同步觸發(fā)器或主從觸發(fā)器,是一種在數(shù)字電路設(shè)計(jì)中廣泛使用的
    的頭像 發(fā)表于 08-11 09:18 ?1176次閱讀

    電路通過(guò)什么觸發(fā)

    的電路,它可以在沒(méi)有時(shí)鐘信號(hào)的情況下保持輸出狀態(tài)不變。通常由一個(gè)或多個(gè)觸發(fā)器(Flip-Flop)組成,觸發(fā)器
    的頭像 發(fā)表于 07-23 11:31 ?933次閱讀

    觸發(fā)器的主要區(qū)別是什么

    觸發(fā)器是數(shù)字電路中的基本組件,它們?cè)趯?shí)現(xiàn)數(shù)字邏輯功能中起著至關(guān)重要的作用。雖然它們?cè)诠δ苌嫌泻芏嘞嗨浦?,但它們之間還是存在一些主要區(qū)別的。本文將探討
    的頭像 發(fā)表于 07-23 10:24 ?2334次閱讀

    原態(tài)和新態(tài)的定義

    (Latch)是一種存儲(chǔ)單元,用于存儲(chǔ)一位二進(jìn)制信息。在數(shù)字電路中,是一種基本的存儲(chǔ)
    的頭像 發(fā)表于 07-23 10:21 ?1204次閱讀

    sr觸發(fā)器的邏輯功能區(qū)別

    在數(shù)字電路中,觸發(fā)器是兩種非常重要的存儲(chǔ)元件,它們?cè)谶壿嫻δ苌嫌兄黠@的區(qū)別。
    的頭像 發(fā)表于 07-23 10:19 ?1318次閱讀

    工作時(shí)是什么觸發(fā)方式

    (Latch)是一種存儲(chǔ)電路,用于存儲(chǔ)一位二進(jìn)制信息。在數(shù)字電路設(shè)計(jì)中非常常見(jiàn),它可
    的頭像 發(fā)表于 07-23 10:17 ?952次閱讀