计算机组成原理自学笔记番外篇——数据 数字 以及一些常识

  • 数据类型
  • 数字表示
  • 逻辑值
  • if
  • case
  • 描述风格

 数据类型

 线网类 net类

  • 不需要保存
  • 连续赋值目标或者门原语的输出
  • 仿真时不需要分配内存空间

变量类 variable类

  •  需要保存
  • 过程赋值的赋值目标
  • 仿真时需要分配内存空间

如何判断使用net还是variable型

1.

  • 连续赋值、门原语、例化语句   net型
#连续赋值语句
assign d=a&b;
assign e=d|c;


#门原语
and(d,a,b);
or(e,d,c);


#以上两种
#d e 必须定义为net型
  • 过程赋值    variable型 
#过程赋值语句

always @(a,b,d,c)
begin
    d=a&b;
    e=d|c;
end

#d e 必须定义为variable型的

2.

  • input inout 必须是 net型
  • output 都可以,取决于如果对其进行赋值(详见1)

数字表示

  • 无符号数表示方法:

位宽'  进制  数字

eg.

2' b00   (00)2

5' d8      (01000)2

  • 有符号数表示方法:

位宽'  sb  数字

按照补码表示,第一位是符号位

eg.

8' sb10111011     (-69)10

如果是无符号则:8' b10111011    (187)10

逻辑值

1:逻辑1,高电平,数字1

0:逻辑0,低电平,数字0

x:不确定

z:高阻态

if语句

#1
if (condition) statement;

#2
if (condition) statement1;
else statement2;

#3
if (condition1) statement1;
else if(condition2) statement2;
else if(condition3) statement3;

#4
if (condition1) statement1;
else if(condition2) statement2;
else if(condition3) statement3;
else statement4;

用if设计组合电路时,如果条件不完整会综合出寄存器

完整条件的方法:

1.else

always @(a,b)
if(sel) Q=a;
else Q=b;

2.设置初值

always @(a,b)
Q=a;
if(!sel) Q=b;

if()内 表达式,非0即为1

()表达式的结果位数与操作数一致,不一致裁掉前位

case语句

case(表达式)
值1: 语句1;
值2: 语句2;
值3: 语句3;

...
#default这句有没有都可以
default: 语句;
endcase

case()里面表达式的值=值1,则执行语句1

如果和以上所有值都不一样,就执行default后面的语句

描述风格

结构化描述(门级描述)

        全部用门原语和底层模块调用

数据流级描述

        全部用assign语句

行为级描述

        全部用always语句(if case)

RTL级描述

        数据流+行为

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值