逻辑与数字系统设计 第三章 硬件描述语言基础

3.1 硬件描述语言概述

Q : 什么是硬件描述语言 ?

硬件描述语言是一种描述硬件电路的语言

通过它 , 可以实现从上层到下层的复杂系统的建设

Q : 硬件描述语言如何描述电路 ?

三种层次 .
第一为结构级(逻辑门级) , 即描述与门或门等
第二为行为级
第三为寄存器传输级(RTL)
通过逻辑综合 , 后两种层次可以被转换为低抽象层的门电路

Q : 硬件描述的用途 ?

  1. 系统仿真
    通过仿真 , 检测设计电路的问题 . 仿真可以使用所有的语法
  2. 硬件实现
    必须保证硬件"可综合" , 不是所有的硬件描述语言都可以用于硬件实现

Q : 目前的硬件描述语言是什么 ?

VHDL和Verilog HDL
VHDL是美国军方开发的 , 1987年称为IEEE标准

Verilog HDL是1983年企业设计

Verilog HDL可以实现系统级 , 算法级 , RTL级 , 门级 ,开关级的逻辑设计(从高到低) , 每个Verilog模型由多个模块组成 , 模块内部又有模块

3.2 Verilog 语言基本概念

3.2.1 Verilog 程序基本结构

module full_adder(
input Ai,//输入端口
input Bi,//输入端口
input Ci,//低位进位,输入端口
output Ci,//本位和,输出端口
output Ciout);//向高位进位,输出端口
//线网说明
wire C0,A0,C1;
assign Ciout = C0|C1;//全加器输出
half_adder u0(
.Ai(Ai),
.Bi(Bi),
.Si(A0),
.Ci(C0));

half_adder u1(
.Ai(A0),
.Bi(Ci),
.Si(Si),
.Ci(C1));

//两个例化

endmodule

其中 , 全加器为顶层模块 , 半加器为底层模块 , 通过例化调用底层模块

3.2.2 Verilog 语言要素

标识符

字母 , 数字 , $ , _的组合 , 第一个为字母或者下划线 , 字符数不超过1024个 , 区别大小写

关键词

即保留字
关键词都是小写

注释

同cpp

逻辑值

四种

  1. 逻辑0 : 表示低电平 , 接地
  2. 逻辑1 : 表示高电平 , 接电源
  3. 逻辑x : 表示逻辑状态不定 , 可能高可能低
  4. 逻辑z : 表示高阻态 , 悬空

常量

  1. 整型常量
    有10进制格式和基数格式
    基数格式 :
    <位宽>'<进制符号><数字>
    如 7'b1000000
    8'h2a
    16'b1010_1011_1111_1010
    注意 : b之后是数字 , 不是'_'

  2. 字符串型常量

如"hello,world"

  1. 参数声明

类似cosnt int

parameter byte_size = 8;

  1. 数据类型
  • 线网类型 : 物理连线 assign F = B & C

当线网没有被驱动时 , 默认为高阻态Z

  • 寄存器类型 : 只能在always和initial中被赋值

最常用的是reg

3.2.3 Verilog 运算符

算术运算符

      • \ %

关系运算符

< > <= >= == !=

逻辑运算符

&& || !

位运算

~非
&与
|或
^异或
~^同或

条件运算

条件?表达式1:表达式2

连接运算

{}
用于赋值wire [7:0]Dbus之类

移位运算

data <<2 左移两位

操作符优先级

3.3 Verilog 行为语句

类别

有过程语句 initial(N) , always(Y)

块语句begin-end(Y),fork-join(N)

赋值语句assign(Y),=(Y)<=(Y)

条件语句if-else(Y),case(Y)

循环语句for(静态可综合),repeat(重复次数常数可综合),while(N)

编译预处理'define(Y),'include(Y),'ifdef-'else-'endif(Y)

赋值语句

  1. 持续性赋值
    对wire
    assign #10 F = A&B;

  2. 过程赋值
    对reg
    always里 , 一旦触发 , 则产生赋值

条件语句

0,x,z为假

循环语句

  1. forever , 用在initiial , 生成周期性波形/
  2. repeat , n次
  3. while , 同cpp
  4. for , 同cpp

3.4 Verilog 描述语句

行为级建模-行为级描述形式

只需要描述清楚输入输出信号的行为 , 抽象程度高于结构级建模

结构级建模-结构描述形式

调用模块实现建模

数据流建模-数据流描述形式

列举问题和答案进行函数构建 , 常见很多位运算

posted @ 2025-05-06 19:42  Guaninf  阅读(45)  评论(0)    收藏  举报