找回密码
 注册
关于网站域名变更的通知
查看: 257|回复: 1
打印 上一主题 下一主题

VERILOG (4)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-8-30 15:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
3.3.5 条件运算符
    Verilog HDL的条件运算符(?:)带有三个操作数(即三目运算符),其格式一般表达为:
    当“条件表达式 ”为真(即逻辑1),执行“真表达式”;当“条件表达式”为假(即逻辑0),执行“假表达式”。
    如果condition_expr 为真(即值为1),选择true_expr;如果condition_expr 为假(值为0),选择false_exp。如果condition_expr为x或z,结果将是按以下逻辑true_expr和false_expr 按位操作的值:0与0得0,1与1得1,其余情况为 x。
    应用举例如下:
1
2
3
4
    regs,t,u,t;
     always@(*)begin
    r =s ? t : u ;
     end
    表达式s如果为真,则把t赋值给r;如果s为假,则把u赋值给r 。
    对应硬件电路图:
图 24
    知识点①条件表达式的作用实际上类似于多路选择器(如图所示);同时,其可以用if-else语句来替代。
图 25
    2选1多路选择器图
    知识点②条件运算符可用在数据流建模中的条件赋值,这个时候,条件表达式的作用相当于控制开关。例如:
1
2
wire[2:0] student ;
    assign student = Marks > 18 ? Grade_A:Grade_C ;
    表达式Marks > 18如果为真,则Grade_A赋值为Student;如果Marks > 18 为假,则Grade_C赋值为Student。
    对应硬件电路图:
图 26
    知识点③条件运算符也可以嵌套使用,每个“真 表 达式”和“假表达式”本身就可以是一个条件表达式。例如:
1
2
reg OUT,M,CTL,CLT,A,B,C,D;
    assign OUT = (M = = 1)?(CTL ? A:B):(CLT ? C:D);
    表达式M == 1如果为真,则判断CTL是否为真,如果为真就将A赋值给OUT,如果为假就将B赋值给OUT;如果M = = 1为假,则判断CLT是否为真,如果为真就将C赋值给OUT,如果为假就将D赋值给OUT。
    对应硬件电路图:
图 27

$ H6 b8 E5 t! g% i& u7 H" J, r. r3.3.6 连接运算符
+ s' B' g0 H5 `, }
    连接操作是将小表达式合并形成大表达式的操作。形式如下:
{expr1, expr2, . . ., exprN}
    拼接符是不消耗任何硬件资源的,它只是把线换一种组合方式。
    实例如下所示:
wire [7:0] Dbus;
assign Dbus [7:4] = {Dbus [0], Dbus [1], Dbus[2], Dbus[ 3 ] } ;
    / /以反转的顺序将低端4位赋给高端4位。
    assign Dbus = {Dbus [3:0], Dbus [ 7 : 4 ] } ;
    / /高4位与低4位交换。
    由于非定长常数的长度未知, 不允许连接非定长常数。例如,下列式子非法:
    {Dbus,5} / /不允许连接操作非定长常数。

4 z0 c9 g5 `9 f
9 c- q# ~$ i& _8 c5 p8 b

! P. B* a$ V& ]5 \! J8 O- {+ a

4 O. x$ B! k, ^3 q3 K/ r
0 L, l3 B! W) w- Y8 q2 @
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-18 06:54 , Processed in 0.109375 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表