亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ch09.2.htm

?? Verilog DHL教程
?? HTM
字號(hào):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML EXPERIMENTAL 970324//EN"><HTML><HEAD><META NAME="GENERATOR" CONTENT="Adobe FrameMaker 5.5/HTML Export Filter"><LINK REL="STYLESHEET" HREF="ch09.css"><TITLE> 9.2	Procedural assignments </TITLE></HEAD><BODY BGCOLOR="#ffffff"><DIV><HR><P><A HREF="ch09.htm">Chapter&nbsp;&nbsp;start</A>&nbsp;&nbsp;&nbsp;<A HREF="ch09.1.htm">Previous&nbsp;&nbsp;page</A>&nbsp;&nbsp;<A HREF="ch09.3.htm">Next&nbsp;&nbsp;page</A></P></DIV><H1 CLASS="Section"><A NAME="pgfId=431"> </A>9.2	<A NAME="12062"> </A><A NAME="75065"> </A><A NAME="marker=24"> </A>P<A NAME="marker=25"> </A>rocedural assignments </H1><P CLASS="Body"><A NAME="pgfId=478"> </A>As described in <A HREF="/Humuhumu/Files/Prof_Smith/Academic/ASICs/Web/ASICs/HTML/Verilog/LRM/HTML/09/ch06.htm#26312" CLASS="XRef"></A>, procedural assignments are used for updating <B CLASS="Keyword">reg</B>, <B CLASS="Keyword">integer</B>, <B CLASS="Keyword">time</B>, <B CLASS="Keyword">real</B>, <B CLASS="Keyword">realtime</B>, and memory data types. There is a significant <A NAME="marker=36"> </A>difference between procedural assignments and continuous assignments: </P><UL><LI CLASS="DashedList"><A NAME="pgfId=528"> </A><I CLASS="Emphasis">Continuous assignments</I><A NAME="marker=37"> </A><A NAME="marker=38"> </A> drive nets and are evaluated and updated whenever an input operand changes value. </LI><LI CLASS="DashedList"><A NAME="pgfId=529"> </A><I CLASS="Emphasis">Procedural assignments</I> update the value of registers under the control of the procedural flow constructs that surround them.</LI></UL><P CLASS="Body"><A NAME="pgfId=530"> </A><A NAME="marker=39"> </A>The right-hand side of a procedural assignment can be any expression that evaluates to a value. The left-hand side shall be a register that receives the assignment from the right-hand side. The left-hand side of a procedural assignment can take one of the following forms:</P><UL><LI CLASS="DashedList"><A NAME="pgfId=531"> </A>reg, integer, real, realtime, or time register data type: <BR>an assignment to the name reference of one of these data types</LI><LI CLASS="DashedList"><A NAME="pgfId=532"> </A>bit-select of a reg, integer, or time register data type:<BR>an assignment to a single bit that leaves the other bits untouched</LI><LI CLASS="DashedList"><A NAME="pgfId=533"> </A>part-select of a reg, integer, or time register data type:<BR>a part-select of one or more contiguous bits that leaves the rest of the bits untouched. Only constant expressions shall be legal for specifying the part-select index</LI><LI CLASS="DashedList"><A NAME="pgfId=534"> </A>memory element:<BR>a single word of a memory. </LI><LI CLASS="DashedList"><A NAME="pgfId=535"> </A>concatenation of any of the above: <BR>a concatenation of any of the previous four forms can be specified, which effectively partitions the result of the right-hand side expression and assigns the partition parts, in order, to the various parts of the concatenation</LI></UL><P CLASS="Note"><A NAME="pgfId=536"> </A>NOTE--Assignment to a <B CLASS="Keyword">reg</B> data type differs from assignment to a <B CLASS="Keyword">real</B>, <B CLASS="Keyword">realtime</B>, <B CLASS="Keyword">time</B>, or <B CLASS="Keyword">integer</B> variable when the right-hand side evaluates to fewer bits than the left-hand side. Assignment to a <B CLASS="Keyword">reg</B> shall not sign-extend.</P><P CLASS="Body"><A NAME="pgfId=537"> </A>The Verilog HDL contains two type of procedural assignment statements:</P><UL><LI CLASS="DashedList"><A NAME="pgfId=538"> </A>blocking procedural assignment statements</LI><LI CLASS="DashedList"><A NAME="pgfId=539"> </A>non-blocking procedural assignment statements</LI></UL><P CLASS="Body"><A NAME="pgfId=540"> </A>Blocking and non-blocking procedural assignment statements specify different procedural flow in sequential blocks.</P><P CLASS="SubSection"><A NAME="pgfId=542"> </A>Blocking procedural assignments<A NAME="marker=40"> </A><A NAME="marker=41"> </A></P><P CLASS="Body"><A NAME="pgfId=543"> </A>A <I CLASS="Emphasis">blocking procedural assignment</I> statement shall be executed before the execution of the statements that follow it in a sequential block (<A HREF="ch09.8.htm#46319" CLASS="XRef">See Sequential blocks</A>). A blocking procedural assignment statement shall not prevent the execution of statements that follow it in a parallel block (<A HREF="ch09.8.htm#47887" CLASS="XRef">See Parallel blocks</A>).</P><P CLASS="Body"><A NAME="pgfId=838"> </A><A NAME="marker=48"> </A>The syntax for a blocking procedural assignment is as follows:</P><P CLASS="Body"><A NAME="pgfId=544"> </A></P><DIV><IMG SRC="ch09-2.gif"></DIV><P CLASS="BNFCapBody"><A NAME="pgfId=839"> </A>Syntax&nbsp;9-1: Syntax for blocking assignments</P><P CLASS="Body"><A NAME="pgfId=547"> </A>where reg_lvalue is a data type that is valid for a procedural assignment statement, <CODE CLASS="code">=</CODE> is the assignment operator, and delay or event control is the optional intra-assignment timing control. The control can be either a delay control (e.g., <CODE CLASS="code">#6</CODE>) or an event control (e.g., <CODE CLASS="code">@(</CODE><B CLASS="Keyword">posedge</B><CODE CLASS="code"> clk)</CODE>). The expression is the right-hand side value that shall be assigned to the left-hand side.</P><P CLASS="Body"><A NAME="pgfId=548"> </A>The <CODE CLASS="code">=</CODE> assignment operator used by blocking procedural assignments is also used by procedural continuous assignments and continuous assignments.</P><DIV><H2 CLASS="Example"><A NAME="pgfId=479"> </A></H2><P CLASS="Body"><A NAME="pgfId=549"> </A>The following examples show blocking procedural assignments.</P><P CLASS="Body"><A NAME="pgfId=550"> </A></P><DIV><IMG SRC="ch09-3.gif"></DIV><P CLASS="SubSection"><A NAME="pgfId=552"> </A><A NAME="67945"> </A><A NAME="marker=53"> </A><A NAME="marker=54"> </A>The non-blocking procedural assignment<A NAME="marker=55"> </A><A NAME="marker=56"> </A></P><P CLASS="Body"><A NAME="pgfId=515"> </A>The <I CLASS="Emphasis">non-blocking procedural assignment</I> allows to schedule assignments without blocking the procedural flow. The non-blocking procedural assignment statement can be used whenever several register assignments within the same time step can be made without regard to order or dependance upon each other.</P><P CLASS="Body"><A NAME="pgfId=554"> </A>The synt<A NAME="marker=34"> </A>ax for a non-blocking procedural assignment is as follows:</P><P CLASS="Body"><A NAME="pgfId=835"> </A></P><DIV><IMG SRC="ch09-4.gif"></DIV><P CLASS="BNFCapBody"><A NAME="pgfId=837"> </A>Syntax&nbsp;9-2: Syntax for non-blocking assignments</P><P CLASS="Body"><A NAME="pgfId=403"> </A>where reg_lvalue is a data type that is valid for a procedural assignment statement, <CODE CLASS="code">&lt;=</CODE> is the non-blocking assignment operator, and delay or event control is the optional intra-assignment timing control. If reg_lvalue requires an evaluation, it shall be evaluated at the time specified by the intra-assignment timing control. The order of evaluation of the reg_lvalue and the expression on the right-hand side is undefined if timing control is not specified.</P><P CLASS="Body"><A NAME="pgfId=503"> </A>The non-blocking assignment operator is the same operator as the less-than-or-equal relational operator. The interpretation shall be decided from the context in which <CODE CLASS="code">&lt;=</CODE> appears. When <CODE CLASS="code">&lt;=</CODE> is used in an expression it shall be interpreted as a relational operator, and when it is used in a non-blocking procedural assignment, it shall be interpreted as an assignment operator.</P><P CLASS="Body"><A NAME="pgfId=560"> </A>The non-blocking procedural assignments shall be evaluated in two steps as discussed in <A HREF="/Humuhumu/Files/Prof_Smith/Academic/ASICs/Web/ASICs/HTML/Verilog/LRM/HTML/09/ch05.htm#42515" CLASS="XRef"></A>.<A NAME="marker=58"> </A> These two steps are shown in the example below.</P><P CLASS="Body"><A NAME="pgfId=565"> </A></P><DIV><MAP NAME="ch09-5"></MAP><IMG SRC="ch09-5.gif" USEMAP="#ch09-5"></DIV><P CLASS="Body"><A NAME="pgfId=567"> </A><I CLASS="Emphasis">At the end of the time step</I> means that the non-blocking assignments are the last assignments executed in a time step--with one exception. Non-blocking assignment events can create blocking assignment events.These blocking assignment events shall be processed after the scheduled non-blocking events.</P><P CLASS="Body"><A NAME="pgfId=568"> </A>Unlike an event or delay control for blocking assignments, the non-blocking assignment does not block the procedural flow. The non-blocking assignment evaluates and schedules the assignment, but does not block the execution of subsequent statements in a begin end block.</P></DIV><DIV><H2 CLASS="Example"><A NAME="pgfId=569"> </A></H2><P CLASS="Body"><A NAME="pgfId=480"> </A></P><DIV><MAP NAME="ch09-6"></MAP><IMG SRC="ch09-6.gif" USEMAP="#ch09-6"></DIV><P CLASS="Body"><A NAME="pgfId=571"> </A>As shown in previous example, the simulator evaluates and schedules assignments for the end of the current time step and can perform swapping operations with the new non-blocking procedural assignments.</P><P CLASS="Body"><A NAME="pgfId=572"> </A></P><DIV><MAP NAME="ch09-7"></MAP><IMG SRC="ch09-7.gif" USEMAP="#ch09-7"></DIV><P CLASS="Body"><A NAME="pgfId=444"> </A>When multiple non-blocking assignments<A NAME="marker=74"> </A> are scheduled to occur in the same register in a particular time slot, the order in which the assignments are evaluated is not guaranteed--the final value of the register is indeterminate. As shown below, the value of register <CODE CLASS="code">a</CODE> is not known until the end of time step 4.</P><P CLASS="Body"><A NAME="pgfId=575"> </A> </P><DIV><IMG SRC="ch09-8.gif"></DIV><P CLASS="Body"><A NAME="pgfId=577"> </A>If the simulator executes two procedural blocks concurrently, and these procedural blocks contain non-blocking assignment operators to the same register, the final value of that register is indeterminate. For example, the value of register <CODE CLASS="code">a</CODE> is indeterminate in the example shown below.</P><P CLASS="Body"><A NAME="pgfId=578"> </A></P><DIV><IMG SRC="ch09-9.gif"></DIV><P CLASS="Body"><A NAME="pgfId=580"> </A>When multiple non-blocking assignments with timing controls are made to the same register, the assignments are made without cancelling non-blocking assignments scheduled at other times. Scheduling an assignment to a register at the same time as a previously scheduled assignment to the same register shall result in an arbitrary order of assignment to that register, and hence the final value of that register cannot be predicted. </P><P CLASS="Body"><A NAME="pgfId=481"> </A>The following example shows how the value of <CODE CLASS="code">i[0]</CODE> is assigned to <CODE CLASS="code">r1</CODE> and how the assignments are scheduled to occur after each time delay.</P><P CLASS="Body"><A NAME="pgfId=581"> </A></P><DIV><MAP NAME="ch09-10"></MAP><IMG SRC="ch09-10.gif" USEMAP="#ch09-10"></DIV></DIV><HR><P><A HREF="ch09.htm">Chapter&nbsp;&nbsp;start</A>&nbsp;&nbsp;&nbsp;<A HREF="ch09.1.htm">Previous&nbsp;&nbsp;page</A>&nbsp;&nbsp;<A HREF="ch09.3.htm">Next&nbsp;&nbsp;page</A></P></BODY></HTML>

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费观看一区| 亚洲国产你懂的| www亚洲一区| 日韩女优av电影| 日韩精品一区二区三区视频| 91精品在线免费| 在线综合+亚洲+欧美中文字幕| 欧美性生活影院| 欧美三级三级三级爽爽爽| 欧美日韩极品在线观看一区| 欧美色电影在线| 在线电影院国产精品| 欧美丰满少妇xxxxx高潮对白 | 欧美三级中文字幕| 欧洲av一区二区嗯嗯嗯啊| 欧美性色综合网| 欧美亚洲精品一区| 欧美一区二区观看视频| 日韩欧美国产wwwww| 久久理论电影网| 国产精品久99| 亚洲一区在线观看视频| 五月婷婷综合在线| 精品一区二区在线免费观看| 大白屁股一区二区视频| 91影院在线免费观看| 欧美日韩一级黄| 精品国产凹凸成av人导航| 久久精品视频免费| 亚洲欧美日本在线| 五月天激情综合网| 国产精品99久久久久久宅男| 99久久精品国产观看| 在线观看区一区二| 精品久久久三级丝袜| 国产农村妇女毛片精品久久麻豆| 亚洲欧洲在线观看av| 偷拍日韩校园综合在线| 久久99精品国产91久久来源| 99久久久无码国产精品| 欧美羞羞免费网站| 久久视频一区二区| 亚洲国产精品一区二区www在线| 奇米色一区二区| gogo大胆日本视频一区| 欧美一区二区视频观看视频| 欧美国产精品中文字幕| 午夜视频一区二区| 国产 欧美在线| 欧美日韩精品系列| 国产日韩精品一区二区三区 | 成人开心网精品视频| 欧美艳星brazzers| 久久久久久电影| 亚洲无人区一区| 盗摄精品av一区二区三区| 欧美老肥妇做.爰bbww视频| 中文av字幕一区| 全部av―极品视觉盛宴亚洲| 99视频在线观看一区三区| 日韩一级成人av| 一区二区不卡在线视频 午夜欧美不卡在| 美腿丝袜在线亚洲一区| av影院午夜一区| 久久综合资源网| 五月婷婷综合激情| 91在线观看视频| 久久久久久久性| 日韩成人免费看| 日本道色综合久久| 中文字幕国产精品一区二区| 看片的网站亚洲| 欧美视频在线一区二区三区 | 国产毛片精品视频| 欧美福利视频一区| 亚洲午夜电影在线| 成年人网站91| 亚洲国产精品国自产拍av| 久久精品二区亚洲w码| 欧美日韩三级在线| 亚洲蜜臀av乱码久久精品蜜桃| 国产suv精品一区二区6| 欧美va在线播放| 免费观看30秒视频久久| 欧美视频在线播放| 亚洲亚洲精品在线观看| 一本久久精品一区二区| 亚洲欧洲av在线| 本田岬高潮一区二区三区| 久久久久久久久99精品| 老鸭窝一区二区久久精品| 欧美另类z0zxhd电影| 性做久久久久久免费观看| 欧美色视频在线观看| 亚洲国产美国国产综合一区二区| 91年精品国产| 亚洲精品日韩专区silk| 色美美综合视频| 一区二区三区中文字幕精品精品| 94-欧美-setu| 一级女性全黄久久生活片免费| 91福利区一区二区三区| 亚洲一区二区视频在线| 欧美日本在线看| 天天爽夜夜爽夜夜爽精品视频| 欧美男同性恋视频网站| 午夜精品一区在线观看| 91精品国产综合久久婷婷香蕉| 日韩精品亚洲一区二区三区免费| 欧美一区二区三区在线| 蜜乳av一区二区三区| 久久综合久久鬼色| 成人午夜看片网址| 亚洲美腿欧美偷拍| 欧美美女黄视频| 久久99国产精品免费| 久久久久久久久久久电影| 成人动漫视频在线| 樱桃视频在线观看一区| 欧美老人xxxx18| 国产又黄又大久久| 国产精品久久久久久户外露出| 色成人在线视频| 青娱乐精品视频在线| 久久精品网站免费观看| aa级大片欧美| 亚洲444eee在线观看| 欧美变态凌虐bdsm| 成人福利视频网站| 午夜精品久久一牛影视| 日韩欧美国产麻豆| 成人黄色在线看| 亚洲国产视频a| 日韩一区二区麻豆国产| 国产成人精品影视| 亚洲一二三四区不卡| 精品国产欧美一区二区| 成人的网站免费观看| 亚洲成av人片一区二区三区| 欧美不卡一区二区三区| 99久免费精品视频在线观看| 亚洲国产精品一区二区尤物区| 精品国产在天天线2019| 91婷婷韩国欧美一区二区| 三级不卡在线观看| 国产精品色眯眯| 3d动漫精品啪啪| 成人晚上爱看视频| 天堂av在线一区| 欧美韩国一区二区| 欧美视频精品在线| 国产盗摄精品一区二区三区在线| 亚洲女厕所小便bbb| 精品欧美一区二区在线观看| 91免费看片在线观看| 精品亚洲免费视频| 亚洲精品视频自拍| 久久久久久久久久久黄色| 欧美三级日韩在线| 成人美女视频在线观看| 日韩av网站在线观看| 国产精品久久福利| 欧美va亚洲va国产综合| 91福利在线观看| 高清久久久久久| 久久精品国产99国产精品| 亚洲精品日产精品乱码不卡| 国产婷婷色一区二区三区四区| 欧美日韩视频在线一区二区| 成人中文字幕电影| 裸体在线国模精品偷拍| 亚洲午夜影视影院在线观看| 国产精品国产三级国产| 欧美精品一区视频| 欧美久久久久久久久久| 91麻豆免费在线观看| 韩国一区二区视频| 日韩不卡一区二区| 亚洲永久精品大片| 综合自拍亚洲综合图不卡区| 久久久久久99精品| 精品国产一区二区在线观看| 欧美高清www午色夜在线视频| 在线国产电影不卡| 96av麻豆蜜桃一区二区| 不卡大黄网站免费看| 国产精品99久久久久久久vr | 欧美亚洲国产一区二区三区va| 国产suv精品一区二区6| 国产一区激情在线| 蜜桃一区二区三区在线| 午夜一区二区三区视频| 夜夜嗨av一区二区三区网页| 中文字幕一区二| 国产精品乱码妇女bbbb| 国产精品午夜在线| 国产欧美日韩激情| 国产欧美va欧美不卡在线| 国产亚洲一区二区三区| 久久久精品国产免费观看同学|