- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
verilog 条件语句例程
【例】同时由两个时钟沿:clk1上升沿和clk2下降沿进行控制的8位移位寄存器。
module 8bits_shift_register(d_in,d_out,clk1,clk2);
input clk1,clk2,d_in;
output d_out;
reg d_out; //d_out保存1bit
reg[1:7] data; // reg[1:7]保存其余7bits
reg[1:4] i ; // i用于循环计数
always @( posedge clk1 or negedge clk2)
begin
d_out=data[1];
for ( i=1;i7;i=i+1)
data[i]=data[i+1];
data[7]=d_in;
end
endmodule;编译的警告;module shift_regester(data_in,data_out,clk1);
input data_in,clk1;
output data_out;
reg[1:7] reg_data;
reg data_out;
integer i;
always@( negedge clk1 )
begin
data_out=reg_data[1];
for(i=1;i=7;i=i+1)
reg_data[i]=reg_data[i+1];
reg_data[7]=data_in;
end
endmodule;;6.5 条件语句;6.5.1 if-else条件语句 ;例如下面这条条件分支语句:
if(enable == 1) out = data_in;
在执行时就会根据条件表达式“enable==1”是否成立来决定
是否执行赋值语句“out=data_in;”:如果enable取值为
“1”,则赋值语句得到执行,输出信号out得到data的值;如
果enable的值为“0”、“x”或“z”(取值不为“1”),则不
执行指定的赋值语句,输出信号out保持原有值不变。
(2) 使用形式2:
if ( 条件表达式 ) 语句或语句块1
else 语句或语句块2
这种形式的条件分支语句将以如下方式得到执行:
? 如果指定的“条件表达式”成立(也就是这个条件
表达式的逻辑值为“1”),则执行条件分支语句第一行所指
定的“语句或语句块1”,然后结束条件分支语句的执行。
? 如果“条件表达式”不成立,则执行由条件分支语
句内第二行的else项所指定的“语句或语句块2”,然后结
束条件分支语句的执行。;????一条带有else选项的if语句映射到硬件上,通常形成的是一个多路选择器(MUX)
例如,下面这条条件分支语句:
if(select==1) out=input1;
else out=input0;
在执行时会根据条件表达式“select==1”是否成立来
决定执行两条过程赋值语句中的哪一条。如果select
取值为“1”,则第一行if这一项所指定的赋值语句
“out=input1;”得到执行,输出信号out得到input1的
取值;如果select取值不为“1”(取值为“0”、“x”或
“z”),则执行第二行else项所指定的赋值语句
“out=input0;”,输出信号out将得到input0的取值。
; (3) 使用形式3:
if (条件表达式1) 语句或语句块1
else if (条件表达式2) 语句或语句块2
……
else if (条件表达式n) 语句或语句块n
else ? 语句或语句块n+1
在这种使用形式中一共出现了n+1个条件分支项,其中每个分支项都指定了当该分支项的条件满足时所要执行的操作。; 在执行这种形式的if-else条件分支语句时,将按照各分支项的排列顺序对各个条件表达式是否成立作出判断,当遇到某一项的条件表达式成立时,就执行这一项所指定的“语句或语句块”。比如假设“条件表达式m”成立,那么就执行“语句或语句块m”。
如果所有的条件表达式都不成立,则执行最后的else项(这一项没有给出条件表达式)所指定的操作(语句或语句块n+1)。
这种形式的if-else条件分支语句实现了一种多路分支选择控制。
比如在例6-21给出的模块中就使用了这种形式的if-else条件分支语句。; 【例6-21】第三种形式的if-else条件分支语句。
module sel_from_three(q,sela,selb,a,b,c );
input sela,selb,a,b,c;
output q;
reg q;
always @(sela or
文档评论(0)