【FPGA】賦值語句

賦值語句應(yīng)該是開發(fā)過程中使用最多的語句桑谍,在FPGA中铺董,賦值語句分為“非阻塞賦值”和“阻塞賦值”,什么是“非阻塞賦值”棱貌? 什么是“阻塞賦值”玖媚?它們的區(qū)別在哪?下面用具體實例來說明婚脱。

不論學(xué)習(xí)什么語句今魔,都是先認(rèn)識,了解一下它再去使用障贸,所謂"知己知彼错森,方可百戰(zhàn)不殆"。

非阻塞賦值

賦值很好理解篮洁,重點在“非阻塞”涩维,“阻塞” 就是 堵 ,“非"表 否定袁波。非阻塞就是通暢嘛瓦阐,那通暢怎么樣的?

先看下面這段代碼

    initial
        begin
            A <= B; // 語句1
            B <= A; // 語句2
        end

其中操作符 "<=" 就是非阻塞型幅值語句锋叨。
我們看begin — end里的兩個句子垄分,到底哪個先執(zhí)行呢?

答案是同時執(zhí)行娃磺,因為它是非阻塞幅值薄湿,一路通暢啊,誰也攔不了我偷卧,我走我的豺瘤,你走你的,互不干擾听诸,通暢就通暢在這里坐求。

現(xiàn)在提個問題:若A=1,B=2,那么執(zhí)行以上語句后,A和B會變成什么呢晌梨?

想知道答案桥嗤,我最好的辦法就是編程须妻,然后仿真看下結(jié)果。

源文件

    ///////////////////////////
    //  文件名:非阻塞賦值語句  //
    //  修改時間:2017.10.27   //
    ///////////////////////////

    `timescale 1ns / 1ps
    module n_assignment(
    input wire clk,
    input wire rst,
    output reg [1:0]A,B
    );
     
    always @(posedge clk,negedge rst)
        begin
            if(!rst)
                begin
                    A <= 1;
                    B <= 2;
                end
             else
                begin
                    A <= B;
                    B <= A;
                end
        end
    endmodule

寫tb文件看下效果

    `timescale 1ns / 1ps
    module tb_n_assignment;
    reg clk;
    reg rst;
    wire [1:0]A;
    wire [1:0]B;
    
    //例化
    n_assignment uuit(.clk(clk),.rst(rst),.A(A),.B(B));
    
    initial
        begin
            rst = 0;#100;
            rst = 1; 
        end
    
    always
    begin
        clk=1;#10; 
        clk=0;#10;
    end
    endmodule
仿真圖

這樣我們從仿真圖可以看出泛领,這段代碼實現(xiàn)的功能是將A,B兩者的數(shù)據(jù)轉(zhuǎn)換荒吏,也就是說執(zhí)行

begin
A <= B; // 語句1
B <= A; // 語句2
end

A,B同時給對方值,給的是自己的初值渊鞋,當(dāng)一賦值之后就變成了對方<(^-^)>绰更,這就類似兩名相向跑步的運動員,起點便是初值锡宋,我們同時出發(fā)儡湾,速度都一樣,所以A到了B出點時,B也到了A的出發(fā)點,也就是 A<=B,B<=A余黎,我變成了你,你變成了我丹皱。



非阻塞賦值就是這樣啦妒穴,下面看阻塞型賦值宋税。

阻塞型賦值

阻塞型賦值說明在賦值時堵住了,那這堵又是怎么回事呢讼油?
老辦法杰赛,寫代碼做實驗,仿真看結(jié)果矮台。

    ///////////////////////////
    //  文件名:阻塞賦值語句  //
    //  修改時間:2017.10.27   //
    ///////////////////////////

    `timescale 1ns / 1ps
    module assignment(
    input wire clk,
    input wire rst,
    output reg [1:0]A,B
    );
     
    always @(posedge clk,negedge rst)
        begin
            if(!rst)
                begin
                    A = 1;
                    B = 2;
                end
             else
                begin
                    A = B;
                    B = A;
                end
        end
    endmodule

tb文件

    module tb_assignment;
        reg clk;
        reg rst;
        wire [1:0]A;
        wire [1:0]B;
        
        //例化
        assignment uuit(.clk(clk),.rst(rst),.A(A),.B(B));
        
        initial
            begin
                rst = 0;#100;
                rst = 1; 
            end
        
        always
        begin
            clk=1;#10; 
            clk=0;#10;
        end
    endmodule

可以看出這段代碼的功能不再是交換A,B兩者的值了,畢竟代碼改了乏屯,賦值變成阻塞的了,功能當(dāng)然不一樣瘦赫,這好像是廢話辰晕,(lll¬ω¬)
我們再看看這段代碼

begin
A = B;
B = A; //注意賦值是阻塞的
end

它是先執(zhí)行A=B,B把自身的值給了A,然后再執(zhí)行A=B确虱。



就像接力賽含友,前面的執(zhí)行了后面才能執(zhí)行,語句A拿著接力棒校辩,跑完了自己的路程,即執(zhí)行了自己的語句窘问,把接力棒交給語句B,B才能往前走宜咒,去執(zhí)行它的語句惠赫。

電路構(gòu)成的差異比較

好的,通過上面的兩個例子故黑,非阻塞型賦值和阻塞型的性質(zhì)的都解釋好了儿咱,下面再看下它們形成電路上的差異庭砍。
我們看這段代碼

    module and_block_assign
    (
        input wire a,b,c,
        output reg y
    )

    always @*
        begin
            y=a;
            y=y&b;
            y=y&c;
        end
    endmodule

以上代碼描述的電路是這樣的


但是阻塞賦值語句變成非阻塞賦值語句后,也就是下面這段代碼

    module and_block_assign
    (
        input wire a,b,c,
        output reg y
    )

    always @*
        begin
            y<=a;
            y<=y&b;
            y<=y&c;
        end
    endmodule

它描述的電路卻是這樣的


可以看出兩者的差別是還是很大的混埠,好了逗威,關(guān)于賦值語句我就嘮叨到這里,文章若有什么錯誤的地方希望讀者指出岔冀,同時也歡迎大家和我在評論區(qū)交流凯旭,當(dāng)然打賞那是最好不過的了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末使套,一起剝皮案震驚了整個濱河市罐呼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侦高,老刑警劉巖嫉柴,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異奉呛,居然都是意外死亡计螺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門瞧壮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來登馒,“玉大人,你說我怎么就攤上這事咆槽〕陆危” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵秦忿,是天一觀的道長麦射。 經(jīng)常有香客問我,道長灯谣,這世上最難降的妖魔是什么潜秋? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮胎许,結(jié)果婚禮上峻呛,老公的妹妹穿的比我還像新娘。我一直安慰自己呐萨,他們只是感情好杀饵,可當(dāng)我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著谬擦,像睡著了一般切距。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惨远,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天谜悟,我揣著相機與錄音话肖,去河邊找鬼。 笑死葡幸,一個胖子當(dāng)著我的面吹牛最筒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蔚叨,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼床蜘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蔑水?” 一聲冷哼從身側(cè)響起邢锯,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎搀别,沒想到半個月后丹擎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡歇父,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年蒂培,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榜苫。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡护戳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出单刁,到底是詐尸還是另有隱情灸异,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布羔飞,位于F島的核電站,受9級特大地震影響檐春,放射性物質(zhì)發(fā)生泄漏逻淌。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一疟暖、第九天 我趴在偏房一處隱蔽的房頂上張望卡儒。 院中可真熱鬧,春花似錦俐巴、人聲如沸骨望。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擎鸠。三九已至,卻和暖如春缘圈,著一層夾襖步出監(jiān)牢的瞬間劣光,已是汗流浹背袜蚕。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绢涡,地道東北人牲剃。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像雄可,于是被迫代替她去往敵國和親凿傅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 《裕語言》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 26,261評論 5 19
  • 《ijs》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 5,093評論 0 7
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程数苫,因...
    小菜c閱讀 6,365評論 0 17
  • 去年快要犧牲的長壽花狭归,今天終于開出了小花一朵,啦啦啦~~真想變成小蜜蜂鉆進花蕊中好好親親它文判,么么噠~
    鈞涵閱讀 225評論 7 1
  • 噼里啪啦的油花过椎,濺畫出斑駁的餐布,當(dāng)侍者打開那盤滾燙的牛排蓋頂時戏仓,每位受用著疚宇,總免不了微顰著眉頭,平展著它赏殃,擋在胸...
    零凝閱讀 205評論 0 2