数字集成电路设计与硬件描述语言

上传人:san****019 文档编号:23730590 上传时间:2021-06-10 格式:PPT 页数:86 大小:1.99MB
收藏 版权申诉 举报 下载
数字集成电路设计与硬件描述语言_第1页
第1页 / 共86页
数字集成电路设计与硬件描述语言_第2页
第2页 / 共86页
数字集成电路设计与硬件描述语言_第3页
第3页 / 共86页
资源描述:

《数字集成电路设计与硬件描述语言》由会员分享,可在线阅读,更多相关《数字集成电路设计与硬件描述语言(86页珍藏版)》请在装配图网上搜索。

1、第 六 讲数 字 集 成 电 路 设 计与 硬 件 描 述 语 言 http:/ http:/ 1. 数 字 IC设 计 方 法2. 两 种 HDL语 言3. Verilog HDL简 介4. VHDL简 介 http:/ 当 前 的 数 字 IC设 计 分 可 分 成 以 下 几 个 层 次 :1. 算 法 级 设 计 : 利 用 高 级 语 言 (如 C语 言 )及 其 他 一 些 系 统 分 析工 具 ( 如 MATLAB) 对 设 计 从 系 统 的 算 法 级 进 行 描 述 。 算法 级 不 需 要 包 含 时 序 信 息 。2. RTL级 设 计 : 用 信 号 在 寄 存 器

2、间 传 输 的 模 式 来 对 设 计 进 行描 述 。3. 门 级 设 计 : 用 逻 辑 门 及 门 级 之 间 的 连 线 对 设 计 进 行 描 述 。4. 开 关 级 设 计 : 用 晶 体 管 及 其 连 线 来 对 设 计 进 行 描 述 。 http:/ 数 字 IC一 般 采 用 自 顶 向 下 (TOP-DOWN)的 设 计 方 法 在 系 统 级 ( 顶 层 )进 行 功 能 的 划 分 和 架 构 设 计 在 功 能 级 进 行 仿 真 、 纠 错 , 并 用 硬 件 描 述 语 言 对 功 能 进行 描 述 用 综 合 工 具 将 设 计 转 化 为 具 体 门 级

3、电 路 网 表 物 理 级 可 以 是 FPGA器 件 或 专 用 集 成 电 路 ( ASIC) TOP-DOWN 设 计 思 想 门 级 功 能 级 系 统 级 TOP-DOWN 设 计 方 法 http:/ 电 子 设 计 规 模 越 来 越 大 (百 万 /千 万 门 的 量 级 ), 复 杂 度越 来 越 高 , 只 能 用 高 级 语 言 来 描 述 其 功 能 , 在 设 计 初期 隐 藏 其 具 体 的 细 节 实 现 。 可 读 性 强 , 易 修 改 。 提 高 逻 辑 设 计 的 效 率 , 降 低 设 计 成 本 , 更 重 要 的 是 缩短 设 计 周 期 。 H D

4、L追 求 对 硬 件 的 描 述 , 而 将 该 描 述 在 目 标 器 件 上 实现 则 由 EDA工 具 的 综 合 器 完 成 。 受 限 于 目 标 器 件 , 并 不 是 所 有 H DL语 句 均 可 被 综 合 。 http:/ VHDL和 Verilog HDL是 目 前 世 界 上 流 行 最 广 的 两种 硬 件 描 述 语 言 , 都 是 在 20世 纪 80年 代 中 期 开 发出 来 的 。 均 为 IEEE标 准 。 VHDL语 法 严 谨 , 易 于 学 习 ; 逻 辑 综 合 能 力 强 。在 欧 洲 使 用 较 多 。 Verilog HDL语 法 灵 活 (

5、 类 似 C语 言 , 较 难 掌 握 )底 层 综 合 出 色 。 美 国 使 用 较 多 。 http:/ Verilog HDL是 一 种 应 用 广 泛 的 硬 件 描 述 语 言 , 是 IC硬 件 设 计 人 员 和EDA工 具 之 间 的 桥 梁 。 其 功 能 为 编 写 设 计 文 本 ( 脚 本 ) 建 立 电 子 系 统 行 为 级 的 仿 真 模 型 并 进 行 仿 真 自 动 综 合 生 成 数 字 逻 辑 网 表 ( Netlist) 及 具 体 电 路 生 成 某 工 艺 条 件 下 具 体 电 路 的 延 时 模 型 并 进 行 时 序 仿 真 仿 真 验 证

6、无 误 后 用 于 制 造 ASIC或 写 入 FPGA器 件 中 常 用 的 Verilog HDL开 发 软 件 有 Altera公 司 的 MAX+PLUS II, Quartus II Xilinx公 司 的 Foundation ISE http:/ 1、 语 法 结 构 上 , 与 C语 言 有 许 多 相 似 之 处 , 并 借 鉴C语 言 的 多 种 操 作 符2、 既 包 含 高 级 程 序 设 计 语 言 的 结 构 形 式 , 同 时 也兼 顾 描 述 硬 件 线 路 连 接 的 具 体 构 件3、 通 过 使 用 结 构 级 或 行 为 级 描 述 可 以 在 不 同

7、的 抽象 层 次 上 进 行 设 计 http:/ 4、 Verilog H DL语 言 是 并 发 的 , 即 具 有 在 同 一 时刻 执 行 多 任 务 的 能 力 , 因 为 在 实 际 硬 件 中 许 多 操作 都 是 在 同 一 时 刻 发 生 的 。 而 计 算 机 编 程 语 言 往往 是 顺 序 执 行 的 。5、 有 时 序 概 念 , 因 为 在 硬 件 电 路 中 从 输 入 到 输出 总 是 有 延 迟 存 在 的 这 两 点 显 示 了 Verilog H DL与 C语 言 的 最 大 区 别 http:/ 数 字 电 路 可 简 单 归 纳 为 两 种 要 素 :

8、 连 线 和 器 件 Verilog HDL建 模 -使 用 硬 件 语 言 对 数 字 电 路 的 这 两种 基 本 要 素 进 行 描 述 。 http:/ 八 位 加 法 器 的 Verilog HDL源 代 码module adder8 (cout, sum, ina,inb, cin);output 7:0 sum;output cout;input 7:0 ina,inb;input cin; assign cout,sum= ina+inb+cin;endmodule准备实现的逻辑功能88 8ci cocin coutinainb sum简 单 的 Verilog HDL的 例

9、子程 序 为 模 块 结 构 , 包 含 在 module与endmodule之 间 端 口 列 表 输 入 、 输 出 端 口 描 述-描 述 外 部 特 性逻 辑 功 能 描 述-描 述 内 部 特 性模 块 名 http:/ 一 .模 块 的 概 念模块是Verilog H DL语言的基本单元,数字系统用 模块集合的形式来描述模块描述某个设计的功能、结构和与其它模块通信的外部端口 Verilog H DL中各个模块是并行运行的模块可以调用其它模块的实体(实例) http:/ module ( ) 端 口 说 明 ( input, output, inout) 参 数 定 义 /可 选 数

10、 据 类 型 定 义 /wire、 reg、 task、 function 连 续 赋 值 语 句 ( assign) /组 合 逻 辑 过 程 块 ( always和 initial) -行 为 描 述 语 句 低 层 模 块 实 例 /调 用 其 它 模 块 任 务 和 函 数 延 时 说 明 块endmodule http:/ 注 意 模 块 的 名 称 DFF, 端 口 列 表 及 说 明 模 块 通 过 端 口 与 外 部 通 信 端 口 在 模 块 名 字后 的 括 号 中 列 出端 口 可 以 说 明 为input, output及inout端 口 等 价 于 硬 件的 引 脚

11、(pin) http:/ module DFF (d, clk, clr, q, qb); .endmodulemodule REG4( d, clk, clr, q, qb); output 3: 0 q, qb; input 3: 0 d; input clk, clr; DFF d0 (d 0, clk, clr, q 0, qb 0); DFF d1 (d 1, clk, clr, q 1, qb 1); DFF d2 (d 2, clk, clr, q 2, qb 2); DFF d3 (d 3, clk, clr, q 3, qb 3);endmodule REG4有 模 块 DF

12、F的四 个 实 例 http:/ 将 模 块 的 实 例 通 过 端 口 连 接 起 来 构 成 一 个 大 的 系 统 每 个 实 例 都 有 自 己 的 名 字 (d0, d1, d2, d3)。 实 例 名 是 每个 对 象 唯 一 的 标 记 , 通 过 这 个 标 记 可 以 查 看 每 个 实 例 的内 部 。 实 例 中 端 口 的 次 序 与 模 块 定 义 的 次 序 相 同 。 模 块 实 例 化 与 程 序 调 用 不 同 。 每 个 实 例 都 是 模 块 的 一 个完 全 的 拷 贝 , 相 互 独 立 、 并 行 。模 块 实 例 化 (module instanc

13、es): http:/ 信 号 在 电 路 中 传 输 会 有 传 播 延 时 , 如 线 延 时 、 器 件 延 时 等 assign # 2 B = A;表 示 B信 号 在 2个 时 间 单 位 后 得 到 A信 号 的 值 所 有 时 延 都 必 须 根 据 时 间 单 位 进 行 定 义 定 义 方 式 为 在 文 件 头 添 加 语 句 :timescale 1ns /100ps 其 中 timescale 是 Verilog HDL 提 供 的 预 编 译 处 理 命 令 , 1ns 表 示 时 间 单 位 是 1ns, 100ps表 示 时 间 精 度 是 100ps 根 据

14、该 命令 , 编 译 工 具 可 以 认 知 #2 为 2ns http:/ http:/ module MUX2_1 (out, a, b, sel); / Port declarations output out; input sel, / control input b, /* data inputs */ a;/* The netlist logic selects input ”a” when sel = 0 and it selects ”b” when sel = 1.*/ not (sel_, sel); and (a1, a, sel_), (b1, b, sel); or

15、(out, a1, b1);endmodule 格 式 自 由一 条 语 句 可 多 行 书 写 ;一 行 可 写 多 个 语 句 。 空白 ( 新 行 、 制 表 符 、 空格 ) 没 有 特 殊 意 义 。如 input A; input B;与 input A; input B;是 一 样 的 。使 用 空 白 符 提 高 可 读 性Verilog忽 略 空 白 符多 行 注 释 , 在 /* */内单 行 注 释到 行 末 结 束 http:/ 0, Low, False, Logic Low, Ground, 1, High, True, Logic High, Power,VDD,

16、 X Unknown: Occurs at Logic Which Cannot be Resolved ConflictHiZ, High Impedance, Tri- Stated, http:/ 5 O37 5位 八 进 制 数 ( 二 进 制 11111 ) 4 D2 4位 十 进 制 数 ( 二 进 制 0010) 4 B1x_01 4位 二 进 制 数 7 Hx 7位 x (扩 展 的 x), 即 xxxxxxx 4 hZ 4 位 z (扩 展 的 z) , 即 zzzz 4 d-4 非 法 : 数 值 不 能 为 负 8 h 2A 在 位 长 和 基 数 之 间 , 以 及 基

17、 数 和 数 值 之 间 允 许出 现 空 格 3 b 001 非 法 : 和 基 数 b 之 间 不 允 许 出 现 空 格 (2+3) b10 非 法 : 位 长 不 能 为 表 达 式 http:/ 格 式 符%h %o %d %b %c %s %m %thex oct dec bin ACSII string module time转 义 符t n ” tab 换 行 反 斜 杠 双 引 号 ASCII representation of above http:/ 标 识 符 是 用 户 在 描 述 时 给 对 象 起 的 名 字 标 识 符 必 须 以 字 母 (a-z, A-Z)或

18、 ( _ )开 头 , 后 面 可 以 是字 母 、 数 字 、 ( $ )或 ( _ )。 最 长 可 以 是 1023个 字 符 标 识 符 区 分 大 小 写 , sel和 SEL是 不 同 的 标 识 符 模 块 、 端 口 和 实 例 的 名 字 都 是 标 识 符module MUX2_1 (out, a, b, sel); output out; input a, b, sel; not not1 (sel_, sel); and and1 (a1, a, sel_); and and2 (b1, b, sel); or or1 (out, a1, b1);endmodule V

19、erilog标 识 符 http:/ 有 效 标 识 符 举 例 : shift_reg_a busa_index _bus3 无 效 标 识 符 举 例 : 34net / 开 头 不 是 字 母 或 “_” a*b_net / 包 含 了 非 字 母 或 数 字 , “$” “_” n238 /包 含 了 非 字 母 或 数 字 , “$” “_” Verilog区 分 大 小 写 , 所 有 Verilog关 键 词 使 用 小 写 字 母 http:/ A、 用 有 意 义 的 名 字 如 Sum 、 CPU_addr等 。B、 用 下 划 线 区 分 词 。C、 采 用 一 些 前

20、缀 或 后 缀 , 如 时 钟 采 用 Clk 前 缀 : Clk_50,Clk_CPU; 低 电 平 采 用 _n 后 缀 : Enable_n;D、 统 一 缩 写 , 如 全 局 复 位 信 号 Rst。E、 同 一 信 号 在 不 同 层 次 保 持 一 致 性 , 如 同 一 时 钟 信 号 必 须在 各 模 块 保 持 一 致 。F、 自 定 义 的 标 识 符 不 能 与 保 留 字 同 名 。G、 参 数 采 用 大 写 , 如 SIZE http:/ net ( 线 网 ) : 表 示 器 件 之 间 的 物 理 连 接 register ( 寄 存 器 ) : 表 示 存

21、储 元 件 parameters(参 数 ) : 运 行 时 的 常 数Verilog主 要 有 三 类 数 据 类 型 : http:/ net需 要 被 持 续 的 驱 动 , 驱 动 它 的 可 以 是 门 和 模 块 。 当 net驱 动 器 的 值 发 生 变 化 时 , 会 自 动 将 新 值 传 送到 net上 。 在 例 子 中 , 线 网 out由 or门 驱 动 。 当 or门 的 输 入信 号 变 化 时 将 传 输 到 线 网 net上 。 http:/ wire类 型 是 最 常 用 的 类 型 , 只 有 连 接 功 能 。 wire常 用 来 表 示 用 assi

22、gn语 句 赋 值 的 组 合 逻 辑 信 号 取 值 为 : 0, 1, x( 不 定 值 ) , z( 高 阻 ) wire和 tri类 型 有 相 同 的 功 能 。 用 户 可 根 据 需 要 将 线网 定 义 为 wire或 tri以 提 高 可 读 性 。 例 如 , 可 以 用 tri类 型 表 示 一 个 net有 多 个 驱 动 源 , 或 者 指 示 这 个 net可 以 是 高 阻 态 Z (hign-impedance)。 http:/ 语法: wire 数据1,数据2,数据n;例子: wire a,b,c/定义了三个wire型变量a,b,c wire7:0 datab

23、us/定义了八位宽wire型向量数据总线 wire20:1 addrbus /定义了20位宽wire型向量地址总线 http:/ 寄 存 器 类 型 在 赋 新 值 以 前 保 持 原 值 用 行 为 描 述 结 构 给 寄 存 器 类 型 赋 值 ( 在 过 程 块 中 进 行 ) 寄 存 器 类 型 大 量 应 用 于 行 为 描 述 及 激 励 描 述 reg_a、 reg_b、 reg_sel用 于 施 加 激 励 给 2:1多 路 器 http:/ 寄 存 器 类 有 四 种 数 据 类 型寄 存 器 类 型 功 能 reg 可 定 义 的 无 符 号 整 数 变 量 , 可 以 是

24、 标 量 (1位 )或 矢 量 ,是 最 常 用 的 寄 存 器 类 型 integer 32位 有 符 号 整 数 变 量 , 算 术 操 作 产 生 二 进 制 补码 形 式 的 结 果 。 通 常 用 作 不 会 由 硬 件 实 现 的 的 数 据 处 理 。real 双 精 度 的 带 符 号 浮 点 变 量 , 用 法 与 integer相 同 。time 64位 无 符 号 整 数 变 量 , 用 于 仿 真 时 间 的 保 存 与 处 理 http:/ 举 例 :reg a; /一 个 标 量 寄 存 器reg 3: 0 v; / 从 MSB到 LSB的 4位 寄 存 器 向 量

25、reg 7: 0 m, n; / 两 个 8位 寄 存 器tri 15: 0 busa; / 16位 三 态 总 线wire 0: 31 w1, w2; / 两 个 32位 wire, MSB为bit0 http:/ 输 入 端 口 可 以由net/register驱 动 , 但 输 入端 口 只 能 是net 输 出 端 口 可以 是net/register类 型 , 输 出端 口 只 能 驱动 netin1in2 OAB Y双 向 端 口 只 能 是 net类 型 http:/ Verilog操 作 符 。 “ 与 ” 操 作 符 的 优 先 级 总 是 比 相 同 类 型 的 “ 或 ”

26、 操 作 符高 操 作 符 类 型 符 号连 接 及 复 制 操 作 符一 元 操 作 符算 术 操 作 符逻 辑 移 位 操 作 符关 系 操 作 符相 等 操 作 符按 位 操 作 符 逻 辑 操 作 符条 件 操 作 符 ! b = 2b1x;if (a = b) $display( a is equal to b);else $display( a is not equal to b);a = 2b1x;b = 2b1x;if (a = b) $display( a is identical to b); else $display( a is not identical to b);

27、Case等 只 能 用 于 行 为 描 述 , 不 能 用 于 RTL描 述 。 综 合 工 具 不 支 持 http:/ 级 联 可 以 从 不 同 的 矢 量 中选 择 位 并 用 它 们 组 成一 个 新 的 矢 量 。用 于 位 的 重 组 和 矢 量构 造 module concatenation; reg 7: 0 rega, regb, regc, regd; reg 7: 0 new; initial begin rega = 8b0000_0011; regb = 8b0000_0100; regc = 8b0001_1000; regd = 8b1110_0000; end

28、 initial fork #10 new = regc 4: 3, regd 7: 5, regb 2, rega 1: 0; / new = 8b11111111 #20 $finish; joinendmodule http:/ 1、 Verilog HDL语 言 提 供 了 十 多 条 的 编 译 指 令 , 例 如 : define include timescale 编 译 指 令 以 ( 反 引 号 ) 开 头 。 编 译 指 令 结 束 不 需 要 加 分 号 。 编 译 指 令 对 同 一 个 文 件 中 的 所 有 模 块 有 效 。 在 进 行 Verilog HDL语

29、言 编 译 时 , 已 定 义 的 编 译 指令 一 直 有 效 , 直 至 有 其 它 编 译 指 令 修 改 它 或 取 消 它2、 说 明 http:/ timescale 说 明 时 间 单 位 及 精 度格 式 : timescale / 如 : timescale 1 ns / 100 ps timescale必 须 在 模 块 之 前 出 现 timescale 1 ns / 10 ps/ All time units are in multiples of 1 nanosecondmodule MUX2_1 (out, a, b, sel);output out;input a

30、, b, sel;not #1 not1( sel_, sel);and #2 and1( a1, a, sel_);and #2 and2( b1, b, sel);or #1 or1( out, a1, b1);endmodule http:/ time_precision不 能 大 于 time_unit precision的 时 间 单 位 应 尽 量 与 设 计 的 实 际 精 度 相 同 precision是 仿 真 器 的 仿 真 时 间 步 长 若 time_unit与 precision_unit差 别 很 大 将 严 重 影 响仿 真 速 度 timescale 1s /

31、1ps, 则 仿 真 器 在 1秒 内 要 扫 描 其 事件 序 列 1012次 ; 而 timescale 1s/1ms则 只 需 扫 描103次 。 如 果 没 有 timescale说 明 将 使 用 缺 省 值 , 一 般 是 ns http:/ 结 构 型 描 述 系统级行 为 描 述 级 算法级 寄存器级数 据 流 描 述混 合 型 描 述 http:/ 术 语 及 定 义 结 构 描 述 : 用 门 来 描 述 器 件 的 功 能 , 是 通 过 实 例 进行 描 述 的 , 将 预 定 义 的 基 本 元 件 实 例 嵌 入 到 语 言 中 ,监 控 实 例 的 输 入 , 一

32、 旦 其 中 任 何 一 个 发 生 变 化 便 运算 并 输 出 。 primitives(基 本 单 元 ) : Verilog语 言 已 定 义 的 具 有 基本 逻 辑 功 能 的 模 型 (models) http:/ 结 构 描 述 表 示 一 个 逻 辑 图 结 构 描 述 用 已 有 的 元 件 构 造 更 为 复 杂 的 元 件module rs_latch (y, yb, r, s); output y, yb; input r, s; nor n1( y, r, yb); nor n2( yb, s, y);endmodule http:/ Verilog基 本 单 元

33、提 供 基 本 的 逻 辑 功 能 , 这 些 逻 辑 功 能 是预 先 定 义 的 , 用 户 不 需 要 再 定 义 这 些 基 本 功 能 基 本 单 元 是 Verilog 库 的 一 部 分 , 基 本 单 元 库 是 自 下 而 上( Bottom Up) 设 计 方 法 的 一 部 分基 本 单 元 名 称 功 能andornotbufxornandnor xnor Logical And Logical Or Inverter Buffer Logical Exclusive Or Logical And Inverted Logical Or Inverted Logical

34、 Exclusive Or Inverted http:/ 以 只 有一 个 输 出 语法:门类型关键字 (端口列表)其中端口列表为:多输入门:(输出,输入1,输入2,)多输出门:(输出1,输出2,输入)三态门: (输出,输入,使能输入) http:/ Verilog有 四 种 不 同 类 型 的 条 件 基 本 单 元 这 四 种 基 本 单 元 只 能 有 三 种 引 脚 : output, input, enable 这 些 单 元 由 enable引 脚 使 能 。 当 使 能 信 号 无 效 时 , 输 出 高 阻 态 。基 本 单 元 名 称 功 能bufif1 条 件 缓 冲 器

35、 , 逻 辑 1 使 能bufif0 条 件 缓 冲 器 , 逻 辑 0 使 能notif1 条 件 反 相 器 , 逻 辑 1 使 能notif0 条 件 反 相 器 , 逻 辑 0 使 能 http:/ 在 端 口 列 表 中 , 先 说 明 输 出 端 口 , 然 后 是 输 入 端 口 实 例 化 时 实 例 的 名 字 是 可 选 项 and (out, in1, in2, in3, in4); / unnamed instance buf b1 (out1, out2, in); / named instance 延 时 说 明 是 可 选 项 。 所 说 明 的 延 时 是 固

36、有 延 时 。 输 出信 号 经 过 该 延 时 才 变 化 。 没 有 说 明 时 延 时 为 0。 notif0 #3.1 n1 (out, in, cntrl); / delay specified http:/ 模 块 实 例 化 时 实 例 必 须 有 一 个 名 字 。 使 用 位 置 映 射 时 , 端 口 次 序 与 模 块 的 说 明 相 同 。 使 用 名 称 映 射 时 , 端 口 次 序 与 位 置 无 关 没 有 连 接 的 输 入 端 口 初 始 化 值 为 x。module comp (o1, o2, i1, i2); output o1, o2; input i

37、1, i2; . . .endmodulemodule test; comp c1 (Q, R, J, K); / Positional mapping comp c2 (.i2(K), .o1(Q), .o2(R), .i1(J); / Named mapping comp c3 (Q, , J, K); / One port left unconnectedendmodule 名 称 映 射 的 语 法 :.内 部 信 号 ( 外 部 信 号 )没 有 连 接 时 通 常 会 产 生 警 告 http:/ 行 为 级 描 述 是 对 系 统 的 高 抽 象 级 描 述 。 在 这 个 抽

38、象 级 , 注 重 的 是 整 个 系 统 的 功 能 而 不 是 实 现 。 Verilog将 高 级 编 程 语 言 结 构 用 于 行 为 描 述 , 包 括 : wait, while, if then, case和 forever在 每 一 个 时 钟 上 升 沿 , 若 Clr不 是 低 电 平 , 置 Q为 D值 , 置 Qb为 D值 的 反DFF无 论 何 时 Clr变 低 置 Q为 0, 置 Qb为 1 http:/ 过 程 块 是 行 为 描 述 的 基 础 过 程 块 有 两 种 : initial块 , 只 能 执 行 一 次 always块 , 循 环 执 行 htt

39、p:/ (1) initial 块语句模板:initialbegin 语句1;语句2;end(2)例initialbegin#2 Stream = 1;#5 Stream = 0;#3 Stream = 1;#4 Stream = 0;#2 Stream = 1; #5 Stream = 0;end (3)说明:0时刻开始执行,只执行一次同一模块内的多个initial过程块,0时刻开始并行执行主要面向功能模拟,通常不具有可综合性。initial过程块不能嵌套使用。initial语 句 中 的 积 累 延 时 http:/ always块语句模板always ()begin /过程赋值/if语句

40、/case语句/while,repeat,for 语句/task,function调用end 当 表 达 式 的 值 改 变 时 就执 行 一 遍 块 内 语 句always过 程 块 不 能 嵌 套使 用 。 http:/ posedge与negedge关键字 上 升 沿 下 降 沿例:同步时序电路的时钟信号为clk,clear为异步清0信号。 敏感信号可写为:/上升沿触发,或高电平清0时 always (posedge clk or posedge clear) Begin 。 end/上升沿触发,或低电平清0时always (posedge clk or negedge clear) B

41、egin 。 end http:/ 块 语 句 用 来 将 多 个 语 句 组 织 在 一 起 , 使 得 他 们 在 语 法 上 如 同 一个 语 句 。 块 语 句 分 为 两 类 : 顺 序 块 : 置 于 关 键 字 begin和 end之 间 , 块 中 的 语 句 以 顺序 方 式 执 行 并 行 块 : 置 于 关 键 字 fork和 join之 间 , 块 中 语 句 并 行 执 行 。 Fork和 join语 句 常 用 于 test bench描 述 。 这 是 因 为 可以 一 起 给 出 矢 量 及 其 绝 对 时 间 , 而 不 必 描 述 所 有 先 前事 件 的

42、时 间 。 http:/ 在 顺 序 块 中 , 语 句 一 条 接 一 条 地 计 算 执 行 。 在 并 行 块 中 , 所 有 语 句 在 各 自 的 延 迟 之 后 立 即 计 算 执 行 。begin #5 a = 3; #5 a = 5; #5 a = 4;end fork #5 a = 3; #15 a = 4; #10 a = 5;join上 面 的 两 个 例 子 在 功 能 上 是 等 价 的 。 Fork-join例 子 里 的 赋值 故 意 打 乱 顺 序 是 为 了 强 调 顺 序 是 没 有 关 系 的 。注 意 fork-join块 是 典 型 的 不 可 综 合

43、 语 句 , 并 且 在 一 些 仿 真器 时 效 率 较 差 。 http:/ 有 四 种 循 环 语 句 :repeat: 将 一 块 语 句 循 环 执 行 确 定 次 数 。 repeat (次 数 表 达 式 ) while: 在 条 件 表 达 式 为 真 时 一 直 循 环 执 行 while (条 件 表 达 式 ) forever: 重 复 执 行 直 到 仿 真 结 束 forever for: 在 执 行 过 程 中 对 变 量 进 行 计 算 和 判 断 , 在 条 件 满 足 时 执 行 for(赋 初 值 ; 条 件 表 达 式 ; 计 算 ) 综 合 工具 还 不

44、支 持 http:/ 语 法 : for ( ; ; ) 循环体语句或语句块;执 行 过 程 :(1)执行“变量赋初值语句”(2)判断“条件表达式”, 真:执行“循环体语句或语句块”,继续执行第(3)步 假:循环结束,退出。(3)执行“变量增值语句”,转到(2)继续执行。 http:/ 数 据 选 择 器 的 数 据 流 型 描 述 。 module mux2x1_df (A, B, select, OUT); input A, B, select; output OUT; assign OUT = select ? B : A; endmodule 数 据 流 型 描 述条 件 运 算 符

45、是 一 种 描 述 组 合 逻 辑 功 能 的 方 法 , 用 assign连 续 赋 值 语 句 来 实 现连 续 赋 值 语 句 完 成 如 下 的 组 合 功 能 : 等 式 右 边 的 所 有 变 量 受持 续 监 控 , 每 当 这 些 变 量 中 有 任 何 一 个 发 生 变 化 , 整 个 表 达式 被 重 新 赋 值 并 送 给 等 式 左 端 http:/ assign语句之间:并行执行(同时执行)过程块之间( always, initial ):并行执行 assign语句与过程块之间:并行执行模块中的门的实例、模块实例语句:并行执行过程块( always, initial

46、 )内部串行块(begin-end):顺序执行并行块(fork-join ):并行执行 http:/ 混 合 描 述 的 1位 全 加 器 module full_add5(a,b,cin,sum,cout); input a,b,cin; output sum,cout; reg cout,m1,m2,m3; /在 always块 中 被 赋 值 的 变 量 应 定 义 为 reg型 wire s1; xor x1(s1,a,b); /调 用 门 元 件 always(a or b or cin) /always块 语 句 begin m1=a m2=b m3=a cout=(m1|m2)|

47、m3; end assign sum=s1cin; /assign持 续 赋 值 语 句 endmodule http:/ 可 综 合 指 的 是 所 设 计 的指 令 和 代 码 能 转 化 为具 体 的 电 路 网 表 结 构 。综 合 过 程 就 是 将Verilog HDL语 言 描述 的 行 为 级 或 数 据 流电 路 模 型 转 化 为 RTL级 功 能 块 或 门 级 电 路网 表 的 过 程 。 而 不 可综 合 的 设 计 主 要 用 于设 计 的 仿 真 验 证 。 行 为 级 或 数 据流 电 路 建 模RTL级 功 能 块逻 辑 优 化优 化 后 的 门 级网 表RT

48、L级 综 合门 级 综 合RTL级 综 合 得 到 由 功 能 模 块 构 成的 电 路 结 构逻 辑 优 化 器 以 用 户 设 定 的 面 积 和时 间 约 束 为 目 标 优 化 电 路 网 表针 对 目 标 工 艺 产 生 优 化 后 的 电 路门 级 网 表 结 构 http:/ 1、 将 硬 件 的 行 为 以 合 理 的 方 式 映 射 为 一 些 进 程 。2、 对 于 每 个 进 程 完 成 的 操 作 , 尽 量 选 择 最 有 效 的 算 法 。3、 了 解 综 合 器 的 性 能 , 特 别 是 了 解 综 合 工 具 支 持 的 Verilog HDL可 综 合 子

49、集 。 以 合 理 的 代 码 风 格 引 导 综 合 工 具 生 成 硬 件4、 对 于 固 定 值 的 信 号 要 用 常 量 代 替 。5、 尽 量 共 享 复 杂 运 算 , 可 以 共 享 的 数 据 处 理 用 函 数 和 过 程 定 义6、 明 确 指 出 过 程 的 无 关 态 , 引 导 综 合 器 进 行 优 化 。7、 使 用 能 够 满 足 需 要 的 最 小 数 据 宽 度 。8、 用 组 合 逻 辑 实 现 的 电 路 和 用 时 序 逻 辑 实 现 的 电 路 要 分 配 到 不同 的 进 程 中 。 http:/ 9、 不 要 使 用 枚 举 类 型 的 属 性

50、 。10、 Integer应 加 范 围 限 制 。11、 通 常 的 可 综 合 代 码 应 该 是 同 步 设 计 。12、 除 非 是 关 键 路 径 的 设 计 , 一 般 不 采 用 调 用 门 级 元 件 来 描 述设 计 的 方 法 , 建 议 采 用 行 为 语 句 来 完 成 设 计 。13、 不 使 用 初 始 化 语 句 ; 不 使 用 带 有 延 时 的 描 述 ; 不 使 用 循 环次 数 不 确 定 的 循 环 语 句 , 如 forever, while等 。14、 用 always过 程 描 述 组 合 逻 辑 , 应 在 敏 感 信 号 列 表 中 列 出 块

51、中 出 现 的 所 有 输 入 信 号 。15、 所 有 的 内 部 寄 存 器 都 应 该 能 够 被 复 位 。 在 使 用 FPGA实 现设 计 时 , 应 尽 量 使 用 器 件 的 全 局 复 位 端 作 为 系 统 总 的 复 位 ,因 为 该 引 脚 的 驱 动 功 能 最 强 , 到 所 有 逻 辑 单 元 的 延 时 也 基 本相 同 , 同 样 的 道 理 , 应 尽 量 使 用 器 件 的 全 局 时 钟 端 作 为 系 统外 部 时 钟 输 入 端 。设 计 准 则 ( 续 ) http:/ 4、 VHDL介 绍VHDL程 序 的 基 本 单 元 与 构 成例 1. 多

52、 路 选 择 器entity mux is generic(m:TIME:=1ns); port(A,B,T: in BIT; Z: out BIT);end mux;当 条 件 T成 立 时 , 输 出 A路 信 号 ;当 条 件 T不 成 立 时 , 输 出 B路 信 号 AB T ZMUX http:/ architecture connect of mux is begin Cale: process(A, B, T) variable tmpl,tmp2,tmp3: BIT; begin tmp1:=A and T; tmp2:=B and (not T); tmp3:=tmp1 o

53、r tmp2; Z=tmp3 after m; end process;end connect: http:/ 例 2. 半 加 器- The entity declarationentity Half_adder is port ( X Half_ SumX: in Bit ; Y adder CarryY: in Bit ; Sum : out Bit ;Carry : out Bit ) ; end Half_adder ; http:/ - The architecture body :architecture Behavioral_description of Half_adder

54、isbeginprocess begin Sum = X xor Y after 5 Ns ;Carry A, Y = B, Sum = Temp_sum, Carry = Temp_carry_1 ) ;U1 : Half_adderport map ( X = Temp_sum , Y = Carry_in Sum = S , Carry = Temp _Carry_2 ) ;U2 : Or_gateport map ( In1 = Temp_carry_1, In2 = Temp_carry_2 , Out1 = Carry_out ) ;end structure ; http:/ V

55、HDL 结 构 (实 体 +结 构 体 )entity 实 体 名 is 说 明 语 句 ; begin 实 体 语 句 部 分 ; end 实 体 名 ; Architecture 结 构 体 名 of 实 体 名 is 说 明 语 句 ; begin 并 行 处 理 语 句 ; end 结 构 体 名 ; 说 明 模 块 的 外 观说 明 模 块 的 内 部 功 能 或 结 构 功 能 : 多 路 选 择 器 结 构 : 全 加 器 http:/ 一 个 实 体 可 以 有 多 个 不 同 的 结 构 体( 比 如 有 的 速 度 快 , 有 的 硬 件 少 )所 以 : 对 应 于 同

56、一 实 体 的 结 构 体 不 允 许 同 名 , 而 对 应 于 不 同 实 体 的 结 构 体 可 以 同 名 。entity Full_adder isarchitecture Structure of Full_adder isarchitecture Structure1 of Full_adder isentity mux isarchitecture Structure of mux is http:/ 包 (Package)、 库 (Library)、配 置 (Configuration) 在 实 体 说 明 和 结 构 体 中 说 明 的 数 据 类 型 、 常 量 和子 程

57、 序 等 只 对 相 应 的 结 构 体 可 见 , 而 不 能 被 其 他设 计 实 体 使 用 。 为 了 提 供 一 组 可 被 多 个 设 计 实 体共 享 的 类 型 、 常 量 和 子 程 序 说 明 , VHDL提 供 了包 (Package) 包 用 来 单 纯 的 罗 列 要 用 到 的 信 号 定 义 、 常 数 定 义 、数 据 类 型 , 元 件 语 句 、 函 数 定 义 和 过 程 定 义 等 ,它 是 一 个 可 编 译 的 设 计 单 元 , 也 是 库 结 构 中 的 一个 层 次 http:/ 包 ( Package )包 分 为 包 说 明 和 包 体 两

58、 部 分包 说 明 的 一 般 形 式 是 ,Package包 名 is 说 明 语 句 ; end 包 名 ; 包 体 的 一 般 形 式 是 : Package body包 名 is 说 明 语 句 ; end 包 名 ; 包 说 明 和 相 应 包 体 的 名 称必 须 一 致 包 说 明 定 义 数 据 类 型 , 给 出 函 数 的 调 用 说 明 包 体 具 体 描 述 实 现 该 函 数功 能 的 语 句 ( 即 函 数 定 义 )和 数 据 的 赋 值 这 种 分 开 描 述 的 好 处 是 ,当 函 数 的 功 能 需 要 作 某 些调 整 时 , 只 要 改 变 包 体 的

59、相 关 语 句 就 行 了 , 使 重 新编 译 的 单 元 数 目 尽 可 能 少 http:/ 可 见 性 包 体 中 的 内 容 不 能 被 其 它 VHDL元 件 引 用 , 只 对 相应 的 包 说 明 可 见 , 而 包 说 明 中 的 内 容 才 是 通 用 的 和 可见 的 ( 当 然 还 必 须 用 use子 句 才 能 提 供 这 种 可 见 性 ) 。下 面 即 为 一 个 包 说 明 及 其 相 应 包 体 的 例 子 :Package Logic is type Three_level_logic is (0, 1, z); function lnvert (inpu

60、t: Three_1evel_logic) return Three_1evel_logic;end logic; 函 数 说 明 ( 对 外 可 见 ) http:/ package body Logic is function invert( input:Three_level_1ogic) return Three_level_logic is begin case lnput is when0 return1; when1 return0; whenz returnz; end case; end invert;end Logic; 函 数 定 义 ( 对 外 不 可 见 ) http

61、:/ 在 一 个 设 计 实 体 说 明 之 前 加 上 use子 句 , 可 以 使 包 说 明 中 的 内 容 可 见 。 如 : use IEEE.STD_LOGlC_1164 a11; 表 示 将 IEEE库 中 的 STD_LOGIC_1164包 中 的 所有 说 明 项 可 见 。 又 如 : use Logic.Three_level_logic; 表 示 将 用 户 自 定 义 的 包 Logic中 的 类 型 Three_level_logic对 相 应 的 设 计 实 体 可 见 。 http:/ 配 置 ( Configuration) 利 用 配 置 语 句 ( 又 叫

62、 组 装 说 明 ) , 可 以 为 待设 计 的 实 体 从 资 源 文 件 ( 库 或 包 ) 中 选 择 不同 行 为 和 结 构 的 结 构 体 ( 做 性 能 比 较 ) 。 配 置 语 句 的 一 般 形 式 为 :configuration 配 置 名 of 实 体 名 is 配 置 说 明 : use子 句 ; 语 句 说 明 ; end 配 置 名 ; http:/ architecture Structure_View of Processor is*end Structure_View;library TTL.Work;configuration V4_27_87 of

63、processor is use Work All; for Structure_View *end V4_27_87; http:/ 库 ( Library ) 库 是 编 译 后 的 数 据 的 集 合 , 它 存 放 已 经 编译 的 实 体 、 结 构 体 、 包 和 配 置 。 库 由 库 元 组 成 , 库 元 是 可 以 独 立 编 译 的VHDL结 构 。 VHDL中 有 两 类 库 元 - 基 本 元 和 辅 助 元基 本 元 包 括 实 体 说 明 、 包 说 明 和 配 置 ,辅 助 元 为 包 体 和 结 构 体 。 基 本 元 对 同 一 库 中 其 它 基 本 元

64、都 是 不 可 见的 , 必 须 用 use子 句 才 能 提 供 可 见 性 。 http:/ 库 的 种 类 VHDL语 言 中 存 在 的 库 大 致 可 以 归 纳 为 5种 : IEEE库 -IEEE认 可 的 标 准 包 集 合 STD库 -VHDL认 可 的 标 准 包 集 合 ASIC库 -与 逻 辑 门 一 一 对 应 的 实 体 用 户 定 义 的 库 -用 户 自 定 义 的 包 和 实 体 WORK库 -现 行 工 作 库 , 缺 省 库 http:/ 库 的 使 用 除 了 WORK库 外 , 其 他 4类 库 在 使 用 前 都 必 须 作 说 明 , 用 库 子

65、句 ( Library) 对 不 同 库 中 的 库 元 提 出 可 见 性 。 Library的 说 明 放 在 设 计 单 元 的 最 前 面 , 其 一 般 形 式 为 :Library库 名 ; 接 着 用 use子 句 使 库 中 的 包 和 包 中 的 项 可 见 。例 如 : Library IEEE; Use IEEE STD_LOGIC_1164 all; 对 于 同 一 库 中 的 不 同 库 元 , 用 use子 句 提 供 所 需 的 可 见 性 ; 对 于 不 同 库 中 的 库 元 , 用 库 子 句 加 上 use子 句 提 供 可 见 性 。 http:/ 库

66、的 作 用 范 围 库 语 句 的 作 用 范 围 从 一 个 实 体 说 明 开 始 到它 所 属 的 结 构 体 和 配 置 为 止 。 当 一 个 源 程 序 中 出 现 两 个 以 上 的 实 体 时 ,库 语 句 应 在 每 个 实 体 说 明 语 句 前 书 写 。 http:/ VHDL语 言 的 对 象 和 分 类 VHDL中 的 对 象 主 要 有 以 下 三 种 : 信 号 (signal)全 局 量 ,对 应 硬 件 中 的 连 线 ,赋 值 ( =) 可 有 延 时 变 量 (variable)局 部 量 ,暂 存 某 些 值 的 载 体 ,赋 值 ( :=) 被 立 即 执 行 常 数 (constant) 电 路 中 的 电 源 和 地 http:/ VHDL结 构 体 的 描 述 方 式 行 为 描 述对 系 统 书 写 模 型 的 描 述 基 本 语 句 是 进 程 语 句 用 于 系 统 数 学 模 型 或 系 统 工 作 原 理 的 仿 真 结 构 描 述对 系 统 子 元 件 和 子 元 件 之 间 相 互 关 系 的 描 述基 本 语 句 是 元

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!