欢迎来到天天文库
浏览记录
ID:45079228
大小:217.50 KB
页数:99页
时间:2019-11-09
《verilog条件语句课件例程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、【例】同时由两个时钟沿:clk1上升沿和clk2下降沿进行控制的8位移位寄存器。module8bits_shift_register(d_in,d_out,clk1,clk2);inputclk1,clk2,d_in;outputd_out;regd_out;//d_out保存1bitreg[1:7]data;//reg[1:7]保存其余7bitsreg[1:4]i;//i用于循环计数always@(posedgeclk1ornegedgeclk2)begind_out=data[1];for(i=1;i<7;i=i+1)data[i]=data[i+1];data[7]=d_i
2、n;endendmodule编译的警告Warning:Designcontains2inputpin(s)thatdonotdrivelogicWarning:Nooutputdependentoninputpin"clk1"Warning:Nooutputdependentoninputpin"clk2"moduleshift_regester(data_in,data_out,clk1);inputdata_in,clk1;outputdata_out;reg[1:7]reg_data;regdata_out;integeri;always@(negedgeclk1)begi
3、ndata_out=reg_data[1];for(i=1;i<=7;i=i+1)reg_data[i]=reg_data[i+1];reg_data[7]=data_in;endendmodule6.5条件语句与常用的高级程序语言一样,为了描述较为复杂的时序关系,VerilogHDL提供了条件语句供分支判断时使用。在可综合风格的VerilogHDL模型中常用的条件语句有if…else和case…endcase两种结构,用法和C程序语言中类似。两者相较,if…else用于不很复杂的分支关系,实际编写可综合风格的模块、特别是用状态机构成的模块时,更常用的是case…endcase风
4、格的代码If_else语句Case语句6.5.1if-else条件语句if-else条件分支语句的作用是根据指定的判断条件是否满足来确定下一步要执行的操作。它在使用时可以采用如下三种形式:(1)使用形式1:if(<条件表达式>)语句或语句块;在if-else条件分支语句的这种使用形式中没有出现else项●这种情况下条件分支语句的执行过程将是:如果指定的“<条件表达式>”成立(也就是这个条件表达式的逻辑值为“1”),则执行条件分支语句内给出的“语句或语句块”,然后退出条件分支语句的执行。如果“<条件表达式>”不成立(也就是条件表达式的逻辑值为“0”、“x”或“z”时),则不执行条件
5、分支语句内给出的“语句或语句块”,而是直接退出条件分支语句的执行。一条没有else选项的if语句映射到硬件上,形成的是一个锁存器例如下面这条条件分支语句:if(enable==1)out=data_in;在执行时就会根据条件表达式“enable==1”是否成立来决定是否执行赋值语句“out=data_in;”:如果enable取值为“1”,则赋值语句得到执行,输出信号out得到data的值;如果enable的值为“0”、“x”或“z”(取值不为“1”),则不执行指定的赋值语句,输出信号out保持原有值不变。(2)使用形式2:if(<条件表达式>)语句或语句块1else语句或语句块
6、2这种形式的条件分支语句将以如下方式得到执行:如果指定的“<条件表达式>”成立(也就是这个条件表达式的逻辑值为“1”),则执行条件分支语句第一行所指定的“语句或语句块1”,然后结束条件分支语句的执行。如果“<条件表达式>”不成立,则执行由条件分支语句内第二行的else项所指定的“语句或语句块2”,然后结束条件分支语句的执行。??一条带有else选项的if语句映射到硬件上,通常形成的是一个多路选择器(MUX)例如,下面这条条件分支语句:if(select==1)out=input1;elseout=input0;在执行时会根据条件表达式“select==1”是否成立来决定执行两
7、条过程赋值语句中的哪一条。如果select取值为“1”,则第一行if这一项所指定的赋值语句“out=input1;”得到执行,输出信号out得到input1的取值;如果select取值不为“1”(取值为“0”、“x”或“z”),则执行第二行else项所指定的赋值语句“out=input0;”,输出信号out将得到input0的取值。(3)使用形式3:if(<条件表达式1>)语句或语句块1elseif(<条件表达式2>)语句或语句块2……elseif(<条件表达式n>)语句或语句块
此文档下载收益归作者所有