1 / 99
文档名称:

verilog条件语句课件例程.ppt

格式:ppt   大小:263KB   页数:99页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

verilog条件语句课件例程.ppt

上传人:xiang1982071 2022/10/10 文件大小:263 KB

下载得到文件列表

verilog条件语句课件例程.ppt

文档介绍

文档介绍:该【verilog条件语句课件例程 】是由【xiang1982071】上传分享,文档一共【99】页,该文档可以免费在线阅读,需要了解更多关于【verilog条件语句课件例程 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。【例】同时由两个时钟沿:clk1上升沿和clk2下降沿进行控制的8位移位寄存器。
module8bits_shift_register(d_in,d_out,clk1,clk2);
inputclk1,clk2,d_in;
outputd_out;
regd_out;//d_out保存1bit
reg[1:7]data;//reg[1:7]保存其余7bits
reg[1:4]i;//i用于循环计数
always@(posedgeclk1ornegedgeclk2)
begin
d_out=data[1];
for(i=1;i<7;i=i+1)
data[i]=data[i+1];
data[7]=d_in;
end
endmodule
【例】同时由两个时钟沿:clk1上升沿和clk2下降沿进
编译的警告
Warning:Designcontains2inputpin(s)that
donotdrivelogic
Warning:Nooutputdependentoninputpin"clk1"
Warning:Nooutputdependentoninputpin"clk2"
编译的警告Warning:Designcontains
moduleshift_regester(data_in,data_out,clk1);
inputdata_in,clk1;
outputdata_out;
reg[1:7]reg_data;
regdata_out;
integeri;
always@(negedgeclk1)
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
moduleshift_regester(data_in,
verilog条件语句课件例程

与常用的高级程序语言一样,为了描述较为复杂
的时序关系,VerilogHDL提供了条件语句供分支判
断时使用。在可综合风格的VerilogHDL模型中常用
的条件语句有if…else和case…endcase两种结构,
用法和C程序语言中类似。两者相较,if…else用于
不很复杂的分支关系,实际编写可综合风格的模
块、特别是用状态机构成的模块时,更常用的是
case…endcase风格的代码
If_else语句
Case语句
,为了描述较为
-else条件语句
if-else条件分支语句的作用是根据指定的判断条件是否满足来
确定下一步要执行的操作。它在使用时可以采用如下三种形式:
(1)使用形式1:
if(<条件表达式>)语句或语句块;
在if-else条件分支语句的这种使用形式中没有出现else项
●这种情况下条件分支语句的执行过程将是:
如果指定的“<条件表达式>”成立(也就是这个条件表达式的
逻辑值为“1”),则执行条件分支语句内给出的“语句或语句块”,
然后退出条件分支语句的执行。
如果“<条件表达式>”不成立(也就是条件表达式的逻辑值为
“0”、“x”或“z”时),则不执行条件分支语句内给出的“语句或语句
块”,而是直接退出条件分支语句的执行。
一条没有else选项的if语句映射到硬件上,形成的是一个锁存器
-else条件语句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;
elseout=input0;
在执行时会根据条件表达式“select==1”是否成立来
决定执行两条过程赋值语句中的哪一条。如果select
取值为“1”,则第一行if这一项所指定的赋值语句
“out=input1;”得到执行,输出信号out得到input1的
取值;如果select取值不为“1”(取值为“0”、“x”或
“z”),则执行第二行else项所指定的赋值语句
“out=input0;”,输出信号out将得到input0的取值。
􀂄􀁺一条带有else选项的if语句映射到硬件上,通常形成
(3)使用形式3:
if(<条件表达式1>) 语句或语句块1
elseif(<条件表达式2>) 语句或语句块2
……
elseif(<条件表达式n>) 语句或语句块n
else  语句或语句块n+1
在这种使用形式中一共出现了n+1个条件分支项,其中每个分支项都指定了当该分支项的条件满足时所要执行的操作。
(3)使用形式3:
在执行这种形式的if-else条件分支语句时,将按照各分支项的排列顺序对各个条件表达式是否成立作出判断,当遇到某一项的条件表达式成立时,就执行这一项所指定的“语句或语句块”。比如假设“<条件表达式m>”成立,那么就执行“语句或语句块m”。
如果所有的条件表达式都不成立,则执行最后的else项(这一项没有给出条件表达式)所指定的操作(语句或语句块n+1)。
这种形式的if-else条件分支语句实现了一种多路分支选择控制。
比如在例6-21给出的模块中就使用了这种形式的if-else条件分支语句。
在执行这种形式的if-else条件分支语句时,将按照各分