数字逻辑复习

一、数字技术基础

1.数制与编码

R进制到 十进制

按权展开

十进制到R进制

不断整除,直到商为0,将余数取倒序

注意:当位数不够时,只能往远离小数点的方向补0

常用编码

BCD码

8421/5421/2421(大于4的数首位为1)/余三码(8421码+3)

循环码/格雷码

相邻两相邻数所对应的循环码只有一位不同

校验码

最高位为检验位,分奇校验码和偶校验码

2.逻辑代数

逻辑运算

与运算:P=A·B / A /\ B / AB (注意第二种写法)
或运算:P= A+B / A / B
非运算
以及衍生的相关复合运算 如同或运算(O里·)、异或运算(O里+)

逻辑函数

基本形式: F=f(A,B,C)

最简式求解

1.利用代数基本定理与规则

交换律、结合律略
分配律:A+BC = (A+B)(A+C)
反演律:~(A+B)= (~A) \/(~B)
反演规则,F -> ~F
对偶规则 F = G --> F* = G*(不改变原变量和反变量
常用公式:A+(~A)B = A+B 、AB+(~A)C+BC = AB+(~A)C

2.利用卡诺图、圈最大卡诺圈

最小项:形如ABC,任意两最小项乘积为0
最大项:形如A+B+C,任意两最大项和为1

编码规则

使最小项取值为1的输入为最小项的编码,使最大项取值为0的输入为最大项的编码
在此规则下有:
~(m_i)的编码 == M_i(重要
且由于F输出要么为0,要么为1
故一个逻辑函数中标准与-或式中最小项编号和标准或-与式中最大项编号是互补

按循环码作卡诺图
1、注意事项

注意图中不相邻,但可能逻辑相邻,如四角或边缘,以确保圈出最大卡诺圈
卡诺图既可以化简最简与-或式(圈1合并),也可以化简最简或-与式(圈0合并)

2.含任意项

可指定任意项(正常输入不会出现的编码)为任意值,以简化逻辑函数

二、Verilog语法基础

1、代码的基本结构

端口说明->端口reg类型说明(可与第一步写一起)->
内部信号说明(reg,wire)说明部分
实例元件或模块(门级)、assign(数据流描述),always/initial(过程流描述) 功能描述部分

module half_adder(A,B,S,C);
input A,B;
output S,C;
reg S,C;
---
上面可写成
module half_adder(input A, input B, output reg S, output reg C);
---
always@(A or B)
begin
case ({A,B})
2 'b00: begin S=0;C=0;end
...
end
endmodule

注意事项:

除了endmodule语句外,都要以分号结束
过程块内部如有多条语句,一定要写在begin end 间
多个实例化引用、多个assign语句、多个always之间均是并行

Verilog基本词法

合法标识符

第一个字母是英文字母或下划线,内部可以有’$'符号 区分大小写
'\a+3*b’也是合法转义标识符
且不能是保留字,如buf,bufif0 time inout等

常量

逻辑常量

0 1 x z 实际电路中没有x态,但有z态(高阻态)

数值常量
数字常量

<-><位宽><`进制><数值> 注意负号的位置

字符串常量

initial块里赋值为寄存器

参数常量

类似于宏定义

变量

wire形 作输入输出 / assign赋值作中间连线
reg形 存储器,可非阻塞赋值
memory形: reg memB[3:0]
integer形:32位有符号二进制数,主要用于循环变量

运算符

  1. 取模运算:结果与被除数符号一致
  2. 逻辑运算:只要一个操作数为x,返回值就为1’bx
  3. 关系运算符同上
  4. 等值运算符:‘==’同上, ’ === '同时比较是否均为x或z
  5. 移位运算:逻辑移位
  6. 缩减运算:各位按位运算方法运算
  7. 拼接运算:{3{1’b0},{a[1:0]}}
  8. 三目运算

Verilog基本句法

1、过程块语句

always 块 / initial 块
敏感事件列表用 or,分隔,可以是变量或信号名
beginend 里顺序执行
里面的赋值语句称为过程赋值语句,用“=”或“<=”实现,“<=”表示与其他赋值语句并行(非阻塞)
过程赋值语句只能赋给reg型
if 语句
case 语句
循环语句

2.模块化电路

module调用/实例化
  1. 按声明顺序传参
  2. ".端口名(参数)的格式传参
task 和 function

必须出现在模块内部,但可在模块的任意位置

function

输入变量只能是 input

function [7:0] rsword8; // 函数名即返回的寄存器 [7:0]说明寄存器类型
input [7:0] word8;
...
endfunction
task

可以不返回值,或通过output端口返回多个值

task example;
input din,s;
output reg d0,d1;
...
endtask

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雾影林深

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值