|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
大家看這個(gè)代碼有什么問(wèn)題嗎? |
| 作者:radeonlcl 欄目:EDA技術(shù) |
夏宇聞verilog數(shù)字系統(tǒng)設(shè)計(jì)教程P147。 MODULE fbosc1(y1,y2,clk,rst) OUTPUT y1,y2; input clk,rst; reg y1,y2; always @(posedge clk or posedge rst) if(rst) y1=0; else y1=y2; always @(posedge clk or posedge rst) if(rst) y2=1; else y2=y1; endMODULE 因?yàn)樽枞x值,所以如果前一個(gè)always模塊的復(fù)位信號(hào)先到0時(shí)刻,則y1,y2都會(huì)取1,而如果后一個(gè)always模塊的復(fù)位信號(hào)先到0時(shí)刻,則y1,y2都會(huì)取0。 為什么那? 如果吧阻塞賦值改成非阻塞賦值無(wú)論那個(gè)always的復(fù)位信號(hào)先到在always模塊結(jié)束時(shí)y1=0,y2=1是確定的,這是為什么? 哪位大哥幫忙解釋一下? |
| 2樓: | >>參與討論 |
| 作者: xjg1111 于 2005/1/30 15:14:00 發(fā)布:
像這種可以用全局時(shí)鐘的,我從來(lái)沒(méi)用想過(guò)用阻塞觸發(fā)! |
|
| 3樓: | >>參與討論 |
| 作者: wqi1012 于 2005/1/31 20:14:00 發(fā)布:
回復(fù)! 你這個(gè)問(wèn)題是非阻塞賦值得概念問(wèn)題. 非阻塞賦值所存的實(shí)時(shí)鐘沿前的值,在時(shí)鐘沿處,如果數(shù)值有變化,在下一周期才會(huì)體現(xiàn)出來(lái)! 我也不知道說(shuō)的對(duì)不對(duì),請(qǐng)其他高手指教 |
|
| 4樓: | >>參與討論 |
| 作者: xjg1111 于 2005/1/31 20:48:00 發(fā)布:
re 阻塞是語(yǔ)句執(zhí)行后,便執(zhí)行。 非阻塞是塊完全執(zhí)行后,塊內(nèi)的一起執(zhí)行。 所以在實(shí)際運(yùn)用中,為了避免毛毛刺兒的后級(jí)傳遞,盡量采用全局時(shí)鐘的非阻塞觸發(fā)。 * - 本貼最后修改時(shí)間:2005-1-31 21:04:18 修改者:xjg1111 |
|
| 5樓: | >>參與討論 |
| 作者: radeonlcl 于 2005/2/1 12:18:00 發(fā)布:
望高手指教,歡迎大家討論。 夏宇聞的書有些例子太別扭了,實(shí)際中大概根本沒(méi)有人這么用,他就是為了介紹他的概念故意編出來(lái)這么別扭的代碼來(lái)說(shuō)明問(wèn)題。 |
|
| 6樓: | >>參與討論 |
| 作者: ltvxworks 于 2005/2/2 8:28:00 發(fā)布:
有問(wèn)題 "因?yàn)樽枞x值,所以如果前一個(gè)always模塊的復(fù)位信號(hào)先到0時(shí)刻,則y1,y2都會(huì)取1,而如果后一個(gè)always模塊的復(fù)位信號(hào)先到0時(shí)刻,則y1,y2都會(huì)取0。 為什么那? " 引用樓主:其實(shí)如果代表實(shí)際中就不知道是哪個(gè)always模塊的復(fù)位信號(hào)先到0時(shí)刻,就有不確定性,那么就沒(méi)有必要用了。 而用非阻塞賦值,你所想要的答案是確定的,而且可以用到一些技巧中。 比如 input rxd; input clk16x; input rst; reg rxd1; reg rxd2; reg clk1x_enable; reg [3:0] no_bits_rcvd; always @(posedge clk16x or posedge rst) begin if (rst) begin rxd1 <= 1'b1; rxd2 <= 1'b1; end else begin rxd1 <= rxd; rxd2 <= rxd1; end end always @(posedge clk16x or posedge rst) begin if (rst) clk1x_enable <= 1'b0; else if (!rxd1 && rxd2) clk1x_enable <= 1'b1 ; else if (no_bits_rcvd == 4'B1001) begin clk1x_enable <= 1'b0; end end 看到有這樣的說(shuō)法,共同理解吧。 By using non_blocking statements it is made sure that right hand side of the statement is evaluated and stored before assignments are done. |
|
| 7樓: | >>參與討論 |
| 作者: radeonlcl 于 2005/2/2 10:07:00 發(fā)布:
為什么會(huì)這樣? 如果前一個(gè)always模塊的復(fù)位信號(hào)先到0時(shí)刻,則y1,y2都會(huì)取1,而如果后一個(gè)always模塊的復(fù)位信號(hào)先到0時(shí)刻,則y1,y2都會(huì)取0。 ????????????????????????????? |
|
| 8樓: | >>參與討論 |
| 作者: xjg1111 于 2005/2/2 10:38:00 發(fā)布:
RE 贊同 ltvxworks 樓主的寫法的確有不確定性,在實(shí)際運(yùn)用中這是不允許的。 |
|
| 9樓: | >>參與討論 |
| 作者: radeonlcl 于 2005/2/2 12:15:00 發(fā)布:
各位大哥,俺知道有不確定性啊,誰(shuí)給解釋一下why? 小弟初學(xué),看不懂啊。 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |