在VeriLog中存在着四种类型的循环语句,用来控制执行语句的执行次数。其语法和用途与C语言很类似,下面为大家讲解一下VeriLOg循环语句。
关键词:while, for, repeat, forever
Verilog 循环语句有 4 种类型,分别是 while,for,repeat,和 forever 循环。循环语句只能在 always 或 initial 块中使用,但可以包含延迟表达式。
while 循环语法格式如下:
(condition)begin…end
while 循环中止条件为 condition 为假。
如果开始执行到 while 循环时 condition 已经为假,那么循环语句一次也不会执行。
当然,执行语句只有一条时,关键字 begin 与 end 可以省略。
下面代码执行时,counter 执行了 11 次。
实例
`timescale1ns/1nsmodule;reg[3:0]counter;initialbegincounter=
仿真结果如下:
for 循环语法格式如下:
(initial_assignment;condition;step_assignment)begin…end
initial_assignment 为初始条件。
condition 为终止条件,condition 为假时,立即跳出循环。
step_assignment 为改变控制变量的过程赋值语句,通常为增加或减少循环变量计数。
一般来说,因为初始条件和自加操作等过程都已经包含在 for 循环中,所以 for 循环写法比 while 更为紧凑,但也不是所有的情况下都能使用 for 循环来代替 while 循环。
下面 for 循环的例子,实现了与 while 循环中例子一样的效果。需要注意的是,i = i + 1 不能像 C 语言那样写成 i++ 的形式,i = i -1 也不能写成 i — 的形式。
实例
//循环语句i;reg[3:0]counter2;initialbegincounter2=
repeat 循环语法格式如下:
repeat(loop_times)begin…end
repeat 的功能是执行固定次数的循环,它不能像 while 循环那样用一个逻辑表达式来确定循环是否继续执行。repeat 循环的次数必须是一个常量、变量或信号。如果循环次数是变量信号,则循环次数是开始执行 repeat 循环时变量信号的值。即便执行期间,循环次数代表的变量信号值发生了变化,repeat 执行次数也不会改变。
下面 repeat 循环例子,实现了与 while 循环中的例子一样的效果。
实例
//repeat循环语句reg[3:0]counter3;initialbegincounter3=b1;endend
下面 repeat 循环例子,实现了连续存储 8 个数据的功能:
实例
always@(posedgeclkornegedgerstn)beginj=0;(!rstn)beginrepeat(8)beginbuffer[j]'b0;//没有延迟的赋值,即同时赋值为0j=j+1;endendelseif(enable)beginrepeat(8)begin@(posedgeclk)buffer[j]
仿真结果如下图。
由图可知,rstn 拉高时,buffer 的 8 个向量同时赋值为 0。
第二个时钟周期后,buffer 依次被 counter3 赋值,实现了连续存储 8 个数据的功能。
forever 循环语法格式如下:
foreverbegin…end
forever 语句表示永久循环,不包含任何条件表达式,一旦执行便无限的执行下去,系统函数 $finish 可退出 forever。
forever 相当于 while(1) 。
通常,forever 循环是和时序控制结构配合使用的。
例如,使用 forever 语句产生一个时钟:
实例
regclk;initialbeginclk=0;foreverbeginclk=~clk;endend
例如,使用 forever 语句实现一个时钟边沿控制的寄存器间数据传输功能:
实例
regclk;regdata_in,data_temp;initialbeginforever@(posedgeclk)data_temp=data_in;end
论文《网络语言语体变异研究》相关资料
首先和你说下论文思路哈:
题目是《网络语言语体变异研究》,所以:一、开篇的时候要总论一下网络语言的特点,由网络语言的特点引出你要论述的问题;
二、介绍一下语体变异的概念(老实说,这个概念我以前没接触过);
三、结合网络语言的特点和具体的例子(主要是在网络语言的使用中,分析网络语言语体变异的情况,分列1、2、3点,自己会多少就写多少);
四、总结自己对于所论述的这个问题的看法,这个部分提一些展望和趋势什么的都可以。
这是我的看法,仅供参考。
下面这个是一些可能会用到的参考资料:
网络媒体的高度互动和参与性,促进了网民之间的人际交流,在这种新型的人际交流空间里,形成了具有独特形式和规则的网络语言,并随着网络的普及迅速流传开来。 比如美眉(长得漂亮的女生)、偶(我)、886(拜拜喽,再见之意)、:)(笑脸)等等,原本是人们在网上社区、网络聊天室、BBS等开放式网络空间进行信息交流和人际沟通时所使用的专用符号,现在流行开来,甚至渗透到传统媒体之中。
1.口语特征
网络人际传播目前仍然主要以文字为中介,许多平时在口头交流时很少用到的书面语言,甚至文言文都会在网络聊天中出现。 但是,与传统语言相比,网络语言主要是一种通过文字进行口语式沟通的工具,保留了人际传播口语化的许多特点。 比如,人们口语表达比较随意,不像写文章那样注意语法、逻辑关系,甚至字斟句酌。 不少网络语言也频繁运用倒装、省略等形式,只要清楚表达意义,不讲求规范规则。 再如,在网络语言中谐音词特别多,这也符合口语传播重发音,不重文字的规律。 另外,口语中常用的象声词、方言等,在网络语言中也被大量应用。 如:后后(模拟笑声)、偶灰常灰常生气乐(模拟福建话发音)、就酱紫(就这样子,台湾话发音)。 网络语言的口语特征营造了一种轻松、随意的交流氛围,这也是它受到网民们欢迎的一个重要原因。
2.便捷特征
于根元主编的《中国网络语言词典》中提到:“大部分‘网语’是网民为提高输入速度,对一些汉语和英语词汇进行改造,对文字、图片、符号等随意链接和镶嵌。 ”在网上聊天打字速度越快越好,根据便捷原则,创造出许多网络缩略语。
一种是汉语拼音字头的简写。 如PPMM(漂亮美眉或婆婆妈妈)、PMP(拍马屁)、GX(恭喜);一种是英语字头的简写。 如BF(Boy friend,男朋友)、FT(faint,晕);另一种是英文谐音,如CU(See you,再见)、3Q(thank you,谢谢);还有一种是数字谐音。 如7456(气死我了)、9494(就是就是)、8错(不错)、(一生一世我爱你)。 当然,更多的网络缩略语是这几种形式的组合。
3.键盘特征
利用计算机键盘上的特殊字符表情达意也是网络语言的一个特点。 这种键盘表情符号的历史可追溯至1986年,日本一位网民在网络留言的尾端加上了一个‘^_^’符号,像一个眯起眼在笑的人脸,很快风靡全球。 受此启发,网友们创造出一系列带有键盘特点的网络语言符号。
键盘符号语言主要是表达丰富的面目表情和肢体语言,如:*_^(使眼色)、T_T(流泪)、=~_~=(脸红了)、,@_@(大吃一惊)等等。 后来这种符号扩大到描述人物、动物特征,如*<—:-(倒看像一个戴着尖顶帽的圣诞老人)、C=:-)(倒看像一个厨师形象)等。
键盘符号的运用使得在网络对话中电脑屏幕上出现了一张张卡通式的形象,不仅更加传神,同时也体现了网络传播“超文本”的特点。
网络语言变化迅速,几乎每天都有新词在聊天室诞生,但大多数网络语言只能在网上昙花一现,便被淹没在语言的滔滔洪流中。 对于这种内容极其丰富又极不稳定的语言形式,很难简单地概括它的所有特征。 在网络空间的交往中,这种独特的语言形式不但成为网民心领神会、约定俗成的身分识别代码,也发挥着特有信息、情感沟通优势。
1.打破禁忌
在网络人际传播的语言文化中,和不认识的人搭讪并试图建立关系是规则所允许和鼓励的,而且放弃建立关系的努力也不会被视为轻浮反覆,同时所有行为的代价和成本都是低廉的。 而网络中运用最广的“GG、MM、大虾、菜鸟”等语言称谓,建立了虚拟的网络人际关系,使得对话比实际交谈更为亲切顺畅。 尽管人们在网络中掩饰了自己的真实身份,但同时通过幽默的调侃、夸张语言打破现实生活中确立对话关系的某些禁忌原则,使双方的交流更加自然。
2.弥补缺失
与面对面的人际交流相比,由于身体、表情和声音等的缺失,造成了网络传播中情感的传递障碍,网络使用者为此绞尽脑汁创造种种方式来弥补。 最为明显的就是网络中表情符号的出现,目前已有数以百计简单符号用以模拟人的基本表情,同时,“哈哈”、“呵呵”、“5555……”这样的拟声词成为网络语言中使用频率最高的一类词。 当网络一端传来的信息末尾加上了“^_^”时,即使不能肯定对方的真实情绪是否如此,但还是知道对方希望传达的是友善、快乐、好心情等情绪。
3.凸显个性
没有了声音、语调、笔迹的区别,网络很大程度上抹煞了受众的“个性”。 因此,网络使用者必须依靠自身的语言风格等因素来张扬自己的个性,以引起别人的重视、取得一定范围的身份认同。 即使个体在现实中相貌平庸、沉默寡言,却毫不影响其在网络中指点江山激扬文字。 丰富多彩的网络语言为网民提供了展示个性的平台,网民展示个性的文字又丰富了网络语言的空间。
网络语言充满活力,但是在其创造发展中的不规范现象,乃至粗俗、不文明等问题也逐渐暴露。 网络语言日益向现实生活渗透、向传统语言渗透,使其负面影响大大加剧。 对此,网络使用者、研究者、媒体等各方面均有责任研究网络语言、净化网络语言,提升网络语言品位,最终引导这种新兴的、多变的言说方式,在健康、文明、尊重传统的基础上变化发展。
部分网络用语释义

84:不是;88:再见;555:呜呜呜(哭);1414:意思意思;8147:不要生气;3x:thanks,谢谢;CU:see you,再见;di:的,专门用于句子最末,表示强调;JJBB:结结巴巴;斑竹:版主,也写作“板猪”;板斧:版副;大虾:大侠;东东:东西;干色摸:干什么,也写作“干虾米”;烘培鸡:HomePage,个人主页;驴友:旅游者;马甲:指一个人拥有的多个ID;呕像:呕吐的对象;粉:很,非常;偶:我;拍砖:指回贴时持批评态度;喷鼻血:形容被震惊的样子;潜水:指呆在聊天室里不说话;我倒:用于表示佩服;我闪:用于表示惹不起躲得起;……ing:表示进行时,如“无限郁闷ing”;超/强/巨/狂/严重:表示特别,起夸张、加强语气作用。
下面这个链接可以解释“语体”的含义,你根据自己的理解选择其中一种:
下面这个链接是关于网络语言语体变异的一篇论文,内容和格式都可以作为参考:
中间的那篇文论是参见《网络语言的特点和优势》 作者是:王顺箐。
希望我的回答对你有所帮助,祝你进步。
这个Verilog程序功能是什么啊?
这是一个典型的线性反馈移位寄存器,也就是LFSR ( left-feedback shift register )。
verilog中的阻塞语句和非阻塞语句什么区别?
赋值的类型的选择取决于建模的逻辑类型在时序块的 RTL 代码中使用非阻塞赋值。 非阻塞赋值在块结束后才完成赋值操作,此赋值方式可以避免在仿真出现冒险和竞争现象。 在组合的 RTL 代码中使用阻塞赋值。 使用阻塞方式对一个变量进行赋值时,此变量的值在在赋值语句执行完后就立即改变。 使用非阻塞赋值方式进行赋值时,各个赋值语句同步执行;因此,通常在一个时钟沿对临时变量进行赋值,而在另一个时钟沿对其进行采样。 下面的模块综合为触发器,其中采用了阻塞赋值方式:module bloc(clk,a,b);input clk, a;output b; reg b;reg y;always @(posedge clk)beginy=a;b=y;endendmodule下面的模块综合为两个触发器,其中采用了非阻塞赋值方式:module nonbloc(clk,a,b);input clk, a;output b; reg b;reg y;always @(posedge clk)beginy<=a;b<=y;endendmodule上面的两个例子的综合的结果不同,左边的例子使用了阻塞赋值方式,综合器将其综合为一个触发器。 右边的例子使用了非阻塞赋值方式,综合器将其综合为两个触发器,y 将出现在综合列表中,作为第二个触发器的输入。 非阻塞过程赋值module swap_vals; reg a, b, clk; initial begin 过程赋值有两类 a = 0; b = 1; clk = 0; 阻塞过程赋值 end always #5 clk = ~clk; 非阻塞过程赋值 always @( posedge clk) begin a <= b; // 非阻塞过程赋值 b <= a; // 交换a和b值 end endmodule阻塞过程赋值执行完成后再执行在顺序块内下一条语句。 非阻塞赋值不阻塞过程流,仿真器读入一条赋值语句并对它进行调度之后, 就可以处理下一条赋值语句。 若过程块中的所有赋值都是非阻塞的,赋值按两步进行:1. 仿真器计算所有RHS表达式的值,保存结果,并进行调度在时序控制指 定时间的赋值。 2. 在经过相应的延迟后,仿真器通过将保存的值赋给LHS表达式完成赋 值。 非阻塞过程赋值(续)阻塞与非阻塞赋值语句行为差别举例1module non_block1; 输出结果: reg a, b, c, d, e, f; initial begin // blocking assignments 0 a= x b= x c= x d= x e= x f = x a = #10 1; // time 10 2 a= x b= x c= x d= x e= 0 f = x b = #2 0; // time 12 c = #4 1; // time 16 4 a= x b= x c= x d= x e= 0 f = 1 end initial begin // non- blocking assignments 10 a= 1 b= x c= x d= 1 e= 0 f = 1 d <= #10 1; // time 10 12 a= 1 b= 0 c= x d= 1 e= 0 f = 1 e <= #2 0; // time 2 f <= #4 1; // time 4 16 a= 1 b= 0 c= 1 d= 1 e= 0 f = 1 end initial begin $monitor($ time,, a= %b b= %b c= %b d= %b e= %b f= %b, a, b, c, d, e, f); #100 $finish; end endmodule非阻塞过程赋值(续)阻塞与非阻塞赋值语句行为差别举例2module pipeMult(product, mPlier, mCand, go, clock); input go, clock; input [7:0] mPlier, mCand; output [15:0] product; reg [15:0] product; always @(posedge go) product = repeat (4) @(posedge clock) mPlier * mCand; endmodulemodule pipeMult(product, mPlier, mCand, go, clock); input go, clock; input [7:0] mPlier, mCand; output [15:0] product; reg [15:0] product; always @(posedge go) product <= repeat (4) @(posedge clock) mPlier * mCand; endmodule
发表评论