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

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

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

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

FPGA學(xué)習(xí)系列:5.阻塞賦值與非阻塞賦值

FPGA學(xué)習(xí)交流 ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2018-05-31 11:40 ? 次閱讀

設(shè)計(jì)背景:

阻塞(=)和非阻塞(<=)一直是在我們FPGA中討論的問題,資深的學(xué)者都是討論的是賦值應(yīng)該發(fā)生在上升下降沿還是在哪里,我們?cè)诜抡嬷锌吹目赡苁巧仙陆凳菧?zhǔn)確的,但是在時(shí)間電路中這就是不得而知了,今天我們將學(xué)習(xí)阻塞和非阻塞的區(qū)別,我們不研究他們發(fā)生在哪里,之討論發(fā)生的時(shí)間和發(fā)生的地方。

設(shè)計(jì)原理:

阻塞:在本語句中“右式計(jì)算”和“左式更新”完全完成之后,才開始執(zhí)行下一條語句;

非阻塞:當(dāng)前語句的執(zhí)行不會(huì)阻塞下一語句的執(zhí)行。

我們來看一下下面的阻塞的代碼

0modulestudy_4 (clk,rst_n,d,q);

1 //輸入輸出端口

2 inputclk;

3 inputrst_n;

4 input[1:0]d;

5 outputreg[1:0]q;

6

7 reg[1:0]q1;//定義一個(gè)寄存器

8

9 always@(posedgeclk)

10 begin

11 if(!rst_n) //復(fù)位時(shí)用阻塞給寄存器輸出賦初值

12 begin

13 q1 =0;

14 q =0;

15 end

16 else //阻塞語句進(jìn)行賦值

17 begin

18 q1 =d;

19 q =q1;

20 end

21 end

22

23endmodule

always語句塊對(duì)Clk的上升沿敏感,當(dāng)發(fā)生Clk 0~1的跳變時(shí),執(zhí)行該always語句。

在begin...end語句塊中所有語句是順序執(zhí)行的,而且最關(guān)鍵的是,阻塞賦值是在本語句中“右式計(jì)算”和“左式更新”完全完成之后,才開始執(zhí)行下一條語句的。

在上面的代碼中在18行當(dāng)上升沿來到先執(zhí)行把d的值給q1,然后下一個(gè)上升沿把q1賦值給q。

我們的測(cè)試文件如下:

0`timescale1ns/1ps

1

2moduletb;

3

4 regclk;

5 regrst_n;

6 reg[1:0]d;

7 wire[1:0]q;

8

9 initialbegin

10 clk =1;

11 rst_n =0;

12 d =0;

13

14 #200.1rst_n =1;

15

16 #100d =2;

17 #100d =0;

18

19 end

20

21 always#10clk =~clk;

22

23 study_4 dut(

24 .clk(clk),

25 .rst_n(rst_n),

26 .d(d),

27 .q(q)

28 );

29

30endmodule

放真圖如下:

image.png

我們可以清楚的看到第一個(gè)上升沿的時(shí)候寄存器q為0,第二個(gè)上升沿的時(shí)候q為2,接下來,再看看非阻塞賦值的情況。

所謂非阻塞賦值,顧名思義,就是指當(dāng)前語句的執(zhí)行不會(huì)阻塞下一語句的執(zhí)行。

非阻塞代碼如下:

0modulestudy_4 (clk,rst_n,d,q);

1

2 inputclk;

3 inputrst_n;

4 input[1:0]d;

5 outputreg[1:0]q;

6

7 reg[1:0]q1;

8

9 always@(posedgeclk)

10 begin

11 if(!rst_n) //復(fù)位時(shí)用阻塞給寄存器輸出賦初值

12 begin

13 q1 <=0;

14 q <=0;

15 end

16 else //阻塞語句進(jìn)行賦值

17 begin

18 q1 <=d;

19 q <=q1;

20 end

21 end

22

23endmodule

非阻塞在18行以后是這樣執(zhí)行的,18行的時(shí)候d的值給q1,但是不是立馬給過去,而是等到上升的時(shí)候才給,在上升沿同樣執(zhí)行19行,把q1得值給q,大家要明白的這個(gè)時(shí)候給值是q1的舊值,然后同樣在19行也是在上升沿到來后值才給過去的。

我們兩個(gè)模塊用的是一樣的仿真文件,我在這里就不給大家展示了,大家可以直接看仿真圖,如下:

image.png

大家可以清楚的看到,在第一個(gè)上升沿的時(shí)候d的值為2,執(zhí)行18行然后不直接賦值,在等到上升沿來的時(shí)候值過去,同樣的后面的也是這么執(zhí)行的,那么我們可以看到圖中和我們分析的一樣。

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

    關(guān)注

    1642

    文章

    21918

    瀏覽量

    611981
  • 非阻塞賦值
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    10055
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA基礎(chǔ)篇(一):阻塞阻塞賦值,不只是比原始信號(hào)差一個(gè)時(shí)鐘周期的問題?。ㄉ钊肫饰觯?/a>

    阻塞阻塞賦值 首先從名字上理解,阻塞賦值賦值
    的頭像 發(fā)表于 09-19 18:32 ?1.3w次閱讀

    Verilog語言中阻塞阻塞賦值的不同

    來源:《Verilog數(shù)字系統(tǒng)設(shè)計(jì)(夏宇聞)》 阻塞阻塞賦值的語言結(jié)構(gòu)是Verilog 語言中最難理解概念之一。甚至有些很有經(jīng)驗(yàn)的Verilog 設(shè)計(jì)工程師也不能完全正確地理解:何
    的頭像 發(fā)表于 08-17 16:18 ?6565次閱讀

    在testbench中如何使用阻塞賦值阻塞賦值

    本文詳細(xì)闡述了在一個(gè)testbench中,應(yīng)該如何使用阻塞賦值阻塞賦值。首先說結(jié)論,建議在testbench中,對(duì)時(shí)鐘信號(hào)(包括分頻時(shí)鐘
    的頭像 發(fā)表于 04-15 09:34 ?460次閱讀
    在testbench中如何使用<b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>

    fpga基礎(chǔ)篇(一):阻塞阻塞賦值

    `阻塞阻塞賦值首先從名字上理解,阻塞賦值賦值
    發(fā)表于 04-05 09:53

    【技巧分享】FPGA至簡設(shè)計(jì)-阻塞賦值阻塞賦值

    阻塞阻塞作者:小黑同學(xué)一、 概述1、阻塞賦值對(duì)應(yīng)的電路往往與觸發(fā)沿沒有關(guān)系,只與電平的變化有關(guān)系。
    發(fā)表于 04-24 14:49

    阻塞賦值阻塞賦值的用法一篇文章就夠了

    對(duì)于VerilogHDL語言中,經(jīng)常在always模塊中,面臨兩種賦值方式:阻塞賦值阻塞賦值
    的頭像 發(fā)表于 01-30 17:41 ?2.2w次閱讀

    verilog中阻塞賦值阻塞賦值到底有什么區(qū)別

    1、阻塞賦值操作符用等號(hào)(即 = )表示?!?b class='flag-5'>阻塞”是指在進(jìn)程語句(initial和always)中,當(dāng)前的賦值語句阻斷了其后的語句,也就是說后面的語句必須等到當(dāng)前的
    發(fā)表于 04-25 08:00 ?0次下載
    verilog中<b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>到底有什么區(qū)別

    IEEE Verilog阻塞賦值阻塞賦值的區(qū)別

    阻塞賦值對(duì)應(yīng)的電路往往與觸發(fā)沿沒有關(guān)系,只與輸入電平的變化有關(guān)系。阻塞賦值對(duì)應(yīng)的電路結(jié)構(gòu)往往與觸發(fā)沿有關(guān)系,只有在觸發(fā)沿時(shí)才有可能發(fā)生
    的頭像 發(fā)表于 06-17 11:57 ?1.2w次閱讀
    IEEE Verilog<b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>的區(qū)別

    VerilogHDL語言:清阻塞賦值阻塞賦值

    對(duì)于VerilogHDL語言中,經(jīng)常在always模塊中,面臨兩種賦值方式:阻塞賦值阻塞賦值
    發(fā)表于 11-19 15:48 ?1283次閱讀

    簡述阻塞賦值阻塞賦值的可綜合性

    阻塞賦值阻塞賦值的可綜合性 Blocking Assignment阻塞
    的頭像 發(fā)表于 05-12 09:45 ?2893次閱讀
    簡述<b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>和<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>的可綜合性

    verilog中阻塞賦值阻塞賦值的區(qū)別

    阻塞賦值操作符用等號(hào)(即 = )表示。“阻塞”是指在進(jìn)程語句(initial和always)中,當(dāng)前的賦值語句阻斷了其后的語句,也就是說后面的語句必須等到當(dāng)前的
    發(fā)表于 12-19 16:49 ?7972次閱讀

    Verilog中阻塞阻塞賦值金規(guī)

    對(duì)于VerilogHDL語言中,經(jīng)常在always模塊中,面臨兩種賦值方式:阻塞賦值阻塞賦值
    的頭像 發(fā)表于 06-01 09:21 ?1725次閱讀

    一文了解阻塞賦值阻塞賦值

    今天給大家普及一下阻塞賦值阻塞賦值的相關(guān)知識(shí)
    的頭像 發(fā)表于 07-07 14:15 ?2439次閱讀
    一文了解<b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>與<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>

    阻塞賦值阻塞賦值

    ”=“阻塞賦值與”
    的頭像 發(fā)表于 09-12 09:06 ?1280次閱讀
    <b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>與<b class='flag-5'>非</b><b class='flag-5'>阻塞</b><b class='flag-5'>賦值</b>

    verilog同步和異步的區(qū)別 verilog阻塞賦值阻塞賦值的區(qū)別

    Verilog是一種硬件描述語言,用于設(shè)計(jì)和模擬數(shù)字電路。在Verilog中,同步和異步是用來描述數(shù)據(jù)傳輸和信號(hào)處理的兩種不同方式,而阻塞賦值阻塞
    的頭像 發(fā)表于 02-22 15:33 ?2130次閱讀