Microsoft Word - FPGA的学习流程.doc

Similar documents
前言

9 什 么 是 竞 争 与 冒 险 现 象? 怎 样 判 断? 如 何 消 除?( 汉 王 笔 试 ) 在 组 合 逻 辑 中, 由 于 门 的 输 入 信 号 通 路 中 经 过 了 不 同 的 延 时, 导 致 到 达 该 门 的 时 间 不 一 致 叫 竞 争 产 生 毛 刺 叫 冒 险 如

图 片 展 示 : 资 源 简 介 : FPGA Altera CycloneII EP2C5T144C8 (4608 个 LE) 2 路 有 源 晶 振 (50M,25M) AS & JTAG 标 准 接 口 VGA 接 口 UART 接 口 蜂 鸣 器 8bit 并 行 DAC 8 路 按 键

第一章.doc

Huawei Technologies Co

untitled

z x / +/- < >< >< >< >< > 3 b10x b10x 0~9,a~f,A~F, 0~9,a~f,A~F, x,x,z,z,?,_ x,x,z,z,?,_ h H 0~9,_ 0~9,_ d D 0~7,x,X,z,Z

Word Pro - FPGA设计高级技巧(Xilinx篇).lwp

untitled

,,, PCB, AR M VxWorks DSP,,,,,,,,,,, (CIP) /,,.:,2005 ISBN TP36 CIP (2005) : ( 10 ) : : (010 ) : (010)

2. initial always initial always 0 always initial always fork module initial always 2 module clk_gen_demo(clock1,clock2); output clock1,clock2; reg cl

untitled

程式人雜誌

untitled

附件1:

KT-SOPCx开发套件简明教程

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6BFBCCAD4B4F3B8D92E646F63>

untitled

j_xilinx-training-courses_2012.pdf

untitled

逢甲大學

untitled

untitled

1 1

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x

Microsoft Word - 正文.doc

UDC 厦门大学博硕士论文摘要库

untitled

D-Type entity D_FF is D :in std_logic; CLK :in std_logic; Q :out std_logic); end D_FF; architecture a of D_FF is process(clk,d) if CLK'EVENT and CLK =

<4D F736F F D20C4CFBEA9B0A3CBB9B6D9D7D4B6AFBBAFB9C9B7DDD3D0CFDEB9ABCBBECAD7B4CEB9ABBFAAB7A2D0D0B9C9C6B1D5D0B9C9CBB5C3F7CAE9A3A8C9EAB1A8B8E C4EA34D4C23239C8D5B1A8CBCDA3A9>

国家信息中心2012年部门预算

<4D F736F F D20B9FCA4C6BFA BEC7A67EABD7A4BDA5DFA5AEA8E0B6E9ABB4ACF9B669A5CEB1D0AB4FADFBC170A658BAC2BFEFC2B2B3B92E646F63>

挂 牌 公 司 声 明 本 公 司 及 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 不 存 在 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 本 公 司 负 责 人 和 主 管 会

要 站 立 得 稳, 我 在 十 字 架 上 已 经 都 抢 夺 过 来 了, 将 魔 鬼 不 让 你 们 来 享 用 的 都 推 开 了, 这 是 让 我 们 来 得 到 的 话 语 我 们 再 也 不 被 奴 仆 的 轭 辖 制, 要 来 拥 有 才 可 以 明 知 道 却 不 去 抢 夺 过

Microsoft Word - 长安大学.doc

<4D F736F F D20312EA1B6BDCCCAA6D7CAB8F1CCF5C0FDA1B72E646F63>

<4D F736F F D20AE67BD62B6A4C1FAB0EAB2BEA661B056BD6DAAF0B0EAB3F8A7695F30372E31302E31365F2E646F63>

1 什么是Setup 和Holdup时间?

untitled

高 端 技 能 型 专 门 人 才 懂 生 产 能 开 发 善 教 学 的 双 师 型 团 队 项 目 开 发 驱 动 校 外 生 产 性 实 训 基 地 驱 动 产 品 研 发 生 产 管 理 技 术 应 用 学 生 科 技 创 新 设 计 中 心 开 发 中 心 技 术 服 务 操 作 技 能

untitled


Microsoft Word - A doc

UDC 厦门大学博硕士论文摘要库

<4D F736F F D20BAFEC4CFBFC6B4B4D0C5CFA2BCBCCAF5B9C9B7DDD3D0CFDEB9ABCBBEB4B4D2B5B0E5CAD7B4CEB9ABBFAAB7A2D0D0B9C9C6B1D5D0B9C9CBB5C3F7CAE9A3A8C9EAB1A8B8E C4EA36D4C23232C8D5B1A8CBCDA3A92E646F63>

穨R _report.PDF

Ch03_嵌入式作業系統建置_01


广东省公安厅关于贯彻执行《社会消防技术服务管理规定》及其配套文件的通知

Ps22Pdf

圖形10.cdr

关于加强打击商业贿赂专项行动宣传工作的通知.doc

中 国 航 天 科 工 集 团 公 司 2011 社 会 责 任 报 告

为 进 一 步 推 进 教 育 教 学 改 革, 满 足 学 生 个 性 化 学 习 需 求, 培 养 学 生 实 践 能 力 和 创 新 创 业 素 质, 在 编 制 2016 级 专 业 人 才 培 养 方 案 指 导 意 见 中, 对 原 有 文 件 关 于 印 发 <2015 级 人 才 培

上市公司运作的法律框架及董事会秘书的法律义务和法律责任.ppt

课外创新研学项目 构想、设计与实现

前 言 2008 年, 我 参 加 了 几 次 可 编 程 器 件 供 应 商 举 办 的 技 术 研 讨 会, 让 我 留 下 深 刻 印 象 的 是 参 加 这 些 研 讨 会 的 工 程 师 人 数 之 多, 简 直 可 以 用 爆 满 来 形 容, 很 多 工 程 师 聚 精 会 神 地 全


Microsoft Word - 营销目录C.doc

最新监狱管理执法全书(二百零五)

FSM Pandeng

第六組公文傳閱表

PowerPoint Presentation

<4D F736F F D20B5E7D7D3D0C5CFA2C0E0D7A8D2B5C5E0D1F8B7BDB0B8D0DEB6C1D6B8C4CF2E646F63>

ebook122-11

VHDL Timer Exercise


附件1

丁无悔

Microsoft Word - 吴教普〔2016〕19号.doc


042-

019-

親鸞和懺悔道的哲學

027-

025-

江 苏 科 技 大 学 809 机 械 设 计 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 江 苏 科 技 大 学 810 机 械 原 理 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 江 苏 科 技 大 学 机 械 原

太 原 科 技 大 学 811 西 方 哲 学 史 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 1-1 本 套 资 料 没 真 题 注 : 若 考 前 收 集 到 最 新 考 研 真 题, 我 们 将 免 费 邮 件 发 送 给 购 买 资 料 的 考 生, 若 考 生 自

鲁 东 大 学 702 普 通 心 理 学 ( 含 发 展 心 理 学 ) 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 2-2 普 通 心 理 学 笔 记, 由 考 取 本 校 本 专 业 高 分 研 究 生 总 结 而 来, 重 点 突 出, 借 助 此 笔 记 可 以 大

浙 江 财 经 大 学 891 统 计 学 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 浙 江 财 经 大 学 统 计 学 891 全 套 考 研 资 料...22 浙 江 财 经 大 学 高 等 数 学 601 全 套 考 研 资 料

<4D F736F F D EA16DBB50B3AFA742A4A7AED1A16EBD67A6AEA4CEA8E4C3C0B34EAF53A6E2B1B4AA522D2DB3B9A5BFA9BE5F702E34332D35345F2E646F63>

苏 州 科 技 学 院 825 管 理 学 原 理 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 管 理 学 原 理 真 题 , 历 年 真 题 主 要 用 来 研 究 考 研 的 考 点, 重 点 和 出 题 思 路, 为 考 研 最 重 要

Microsoft Word 司仲敖.doc

重 庆 邮 电 大 学 数 据 结 构 802 初 试 内 部 精 华 资 料 1-1 数 据 结 构 2007, 暂 无 答 案 2-1 考 研 复 习 规 划 指 导 全 年 专 业 课 复 习 计 划, 指 导 考 生 科 学 时 间 分 配, 提 高 备 考 效 率, 免 费 赠 送 2-2

海 军 大 连 舰 艇 学 院 807 有 机 化 学 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 2-2 有 机 化 学 笔 记, 此 笔 记 为 高 分 研 究 生 复 习 所 用, 借 助 此 笔 记 可 以 大 大 提 高 复 习 效 率, 把 握 报 考 院 校 2

喜 临 门 家 具 股 份 有 限 公 司 2016 年 第 二 次 临 时 股 东 大 会 会 议 议 程 会 议 召 集 人 : 公 司 董 事 会 现 场 会 议 时 间 :2016 年 6 月 16 日 ( 星 期 五 ) 下 午 14 时 现 场 会 议 地 点 : 浙 江 省 绍 兴 市

Microsoft Word - Book 11 人道行.doc

山 东 财 经 大 学 431 金 融 学 综 合 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 2-2 金 融 学 笔 记, 由 考 取 本 校 本 专 业 高 分 研 究 生 总 结 而 来, 重 点 突 出, 借 助 此 笔 记 可 以 大 大 提 高 复 习 2-3 金

关于调整可充抵保证金证券的通知( )

Microsoft Word - Book 2 月下行.doc

盐 田 区 2015 年 社 会 建 设 行 动 计 划 2015 年 是 全 面 深 化 改 革 的 关 键 之 年 全 面 推 进 依 法 治 区 的 开 局 之 年, 也 是 十 二 五 规 划 的 收 官 之 年 十 三 五 规 划 的 谋 划 之 年 结 合 省 市 年 度 社 会 工 作

Microsoft Word - _二_-1-2D研習講義-孫藝玨.doc


证券代码: 证券简称:航空动力 公告编号:2011临-【】

zt

Microsoft Word - Book 3 巫山行.doc

Microsoft Word - 【預官_士_考選歷屆試題86~100】.doc

一、银行结售汇业务

田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田有關田

<4D F736F F D BEC7A67E2DB5A7B8D52DBB79A4E5AFE0A44FB4FAC5E7BEE3A658A5FE2E646F63>

Transcription:

王 者 之 风 的 博 客 http://blog.sina.com.cn/towbx 原 文 地 址 :ARM,FPGA,DSP 的 特 点 和 区 别 是 什 么? 作 者 : 红 枫 叶 DSP(digital singnal processor) 是 一 种 独 特 的 微 处 理 器, 有 自 己 的 完 整 指 令 系 统, 是 以 数 字 信 号 来 处 理 大 量 信 息 的 器 件 一 个 数 字 信 号 处 理 器 在 一 块 不 大 的 芯 片 内 包 括 有 控 制 单 元 运 算 单 元 各 种 寄 存 器 以 及 一 定 数 量 的 存 储 单 元 等 等, 在 其 外 围 还 可 以 连 接 若 干 存 储 器, 并 可 以 与 一 定 数 量 的 外 部 设 备 互 相 通 信, 有 软 硬 件 的 全 面 功 能, 本 身 就 是 一 个 微 型 计 算 机 DSP 采 用 的 是 哈 佛 设 计, 即 数 据 总 线 和 地 址 总 线 分 开, 使 程 序 和 数 据 分 别 存 储 在 两 个 分 开 的 空 间, 允 许 取 指 令 和 执 行 指 令 完 全 重 叠 也 就 是 说 在 执 行 上 一 条 指 令 的 同 时 就 可 取 出 下 一 条 指 令, 并 进 行 译 码, 这 大 大 的 提 高 了 微 处 理 器 的 速 度 另 外 还 允 许 在 程 序 空 间 和 数 据 空 间 之 间 进 行 传 输, 因 为 增 加 了 器 件 的 灵 活 性 其 工 作 原 理 是 接 收 模 拟 信 号, 转 换 为 0 或 1 的 数 字 信 号, 再 对 数 字 信 号 进 行 修 改 删 除 强 化, 并 在 其 他 系 统 芯 片 中 把 数 字 数 据 解 译 回 模 拟 数 据 或 实 际 环 境 格 式 它 不 仅 具 有 可 编 程 性, 而 且 其 实 时 运 行 速 度 可 达 每 秒 数 以 千 万 条 复 杂 指 令 程 序, 远 远 超 过 通 用 微 处 理 器, 是 数 字 化 电 子 世 界 中 日 益 重 要 的 电 脑 芯 片 它 的 强 大 数 据 处 理 能 力 和 高 运 行 速 度, 是 最 值 得 称 道 的 两 大 特 色 由 于 它 运 算 能 力 很 强, 速 度 很 快, 体 积 很 小, 而 且 采 用 软 件 编 程 具 有 高 度 的 灵 活 性, 因 此 为 从 事 各 种 复 杂 的 应 用 提 供 了 一 条 有 效 途 径 根 据 数 字 信 号 处 理 的 要 求,DSP 芯 片 一 般 具 有 如 下 主 要 特 点 : http://www.armforum.cn (1) 在 一 个 指 令 周 期 内 可 完 成 一 次 乘 法 和 一 次 加 法 ; (2) 程 序 和 数 据 空 间 分 开, 可 以 同 时 访 问 指 令 和 数 据 ; M 开 发 论 坛 (3) 片 内 具 有 快 速 RAM, 通 常 可 通 过 独 立 的 数 据 总 线 在 两 块 中 同 时 访 问 ; (4) 具 有 低 开 销 或 无 开 销 循 环 及 跳 转 的 硬 件 支 持 ; (5) 快 速 的 中 断 处 理 和 硬 件 I/O 支 持 ; (6) 具 有 在 单 周 期 内 操 作 的 多 个 硬 件 地 址 产 生 器 ;

(7) 可 以 并 行 执 行 多 个 操 作 ; (8) 支 持 流 水 线 操 作, 使 取 指 译 码 和 执 行 等 操 作 可 以 重 叠 执 行 当 然, 与 通 用 微 处 理 器 相 比,DSP 芯 片 的 其 他 通 用 功 能 相 对 较 弱 些 ARM(Advanced RISC Machines) 是 微 处 理 器 行 业 的 一 家 知 名 企 业, 设 计 了 大 量 高 性 能 廉 价 耗 能 低 的 RISC 处 理 器 相 关 技 术 及 软 件 ARM 架 构 是 面 向 低 预 算 市 场 设 计 的 第 一 款 RISC 微 处 理 器, 基 本 是 32 位 单 片 机 的 行 业 标 准, 它 提 供 一 系 列 内 核 体 系 扩 展 微 处 理 器 和 系 统 芯 片 方 案, 四 个 功 能 模 块 可 供 生 产 厂 商 根 据 不 同 用 户 的 要 求 来 配 置 生 产 由 于 所 有 产 品 均 采 用 一 个 通 用 的 软 件 体 系, 所 以 相 同 的 软 件 可 在 所 有 产 品 中 运 行 目 前 ARM 在 手 持 设 备 市 场 占 有 90 以 上 的 份 额, 可 以 有 效 地 缩 短 应 用 程 序 开 发 与 测 试 的 时 间, 也 降 低 了 研 发 费 用 字 串 4 FPGA 是 英 文 Field Programmable Gate Array( 现 场 可 编 程 门 阵 列 ) 的 缩 写, 它 是 在 PAL GAL PLD 等 可 编 程 器 件 的 基 础 上 进 一 步 发 展 的 产 物, 是 专 用 集 成 电 路 (ASIC) 中 集 成 度 最 高 的 一 种 FPGA 采 用 了 逻 辑 单 元 阵 列 LCA(Logic Cell Array) 这 样 一 个 新 概 念, 内 部 包 括 可 配 置 逻 辑 模 块 CLB(Configurable Logic Block) 输 出 输 入 模 块 IOB (Input Output Block) 和 内 部 连 线 (Interconnect) 三 个 部 分 用 户 可 对 FPGA 内 部 的 逻 辑 模 块 和 I/O 模 块 重 新 配 置, 以 实 现 用 户 的 逻 辑 它 还 具 有 静 态 可 重 复 编 程 和 动 态 在 系 统 重 构 的 特 性, 使 得 硬 件 的 功 能 可 以 像 软 件 一 样 通 过 编 程 来 修 改 作 为 专 用 集 成 电 路 (ASIC) 领 域 中 的 一 种 半 定 制 电 路,FPGA 既 解 决 了 定 制 电 路 的 不 足, 又 克 服 了 原 有 可 编 程 器 件 门 电 路 数 有 限 的 缺 点 可 以 毫 不 夸 张 的 讲,FPGA 能 完 成 任 何 数 字 器 件 的 功 能, 上 至 高 性 能 CPU, 下 至 简 单 的 74 电 路, 都 可 以 用 FPGA 来 实 现 FPGA 如 同 一 张 白 纸 或 是 一 堆 积 木, 工 程 师 可 以 通 过 传 统 的 原 理 图 输 入 法, 或 是 硬 件 描 述 语 言 自 由 的 设 计 一 个 数 字 系 统 通 过 软 件 仿 真, 我 们 可 以 事 先 验 证 设 计 的 正 确 性 在 PCB 完 成 以 后, 还 可 以 利 用 FPGA 的 在 线 修 改 能 力, 随 时 修 改 设 计 而 不 必 改 动 硬 件 电 路 使 用 FPGA 来 开 发 数 字 电 路, 可 以 大 大 缩 短 设 计 时 间, 减 少 PCB 面 积, 提 高 系 统 的 可 靠 性 FPGA 是 由 存 放 在 片 内 RAM 中 的 程 序 来 设 置 其 工 作 状 态 的, 因 此 工 作 时 需 要 对 片 内 的 RAM 进 行 编 程 用 户 可 以 根 据 不 同 的 配 置 模 式, 采 用 不 同 的 编 程 方 式 加 电 时,FPGA 芯 片 将 EPROM 中 数 据 读 入 片 内 编 程 RAM 中, 配 置 完 成 后,FPGA 进 入 工 作 状 态 掉 电 后,FPGA 恢 复 成 白 片, 内 部 逻 辑 关 系 消 失, 因 此,FPGA 能 够 反 复 使 用 FPGA

的 编 程 无 须 专 用 的 FPGA 编 程 器, 只 须 用 通 用 的 EPROM PROM 编 程 器 即 可 当 需 要 修 改 FPGA 功 能 时, 只 需 换 一 片 EPROM 即 可 这 样, 同 一 片 FPGA, 不 同 的 编 程 数 据, 可 以 产 生 不 同 的 电 路 功 能 因 此,FPGA 的 使 用 非 常 灵 活 可 以 说,FPGA 芯 片 是 小 批 量 系 统 提 高 系 统 集 成 度 可 靠 性 的 最 佳 选 择 之 一 目 前 FPGA 的 品 种 很 多, 有 XILINX 的 XC 系 列 TI 公 司 的 TPC 系 列 ALTERA 公 司 的 FIEX 系 列 等 他 们 的 区 别 是 什 么 呢?DSP 主 要 是 用 来 计 算 的, 比 如 进 行 加 密 解 密 调 制 解 调 等, 优 势 是 强 大 的 数 据 处 理 能 力 和 较 高 的 运 行 速 度 ARM 具 有 比 较 强 的 事 务 管 理 功 能, 可 以 用 来 跑 界 面 以 及 应 用 程 序 等, 其 优 势 主 要 体 现 在 控 制 方 面, 而 FPGA 可 以 用 VHDL 或 veriloghdl 来 编 程, 灵 活 性 强, 由 于 能 够 进 行 编 程 除 错 再 编 程 和 重 复 操 作, 因 此 可 以 充 分 地 进 行 设 计 开 发 和 验 证 当 电 路 有 少 量 改 动 时, 更 能 显 示 出 FPGA 的 优 势, 其 现 场 编 程 能 力 可 以 延 长 产 品 在 市 场 上 的 寿 命, 而 这 种 能 力 可 以 用 来 进 行 系 统 升 级 或 除 错 原 文 地 址 : 如 何 学 习 FPGA 作 者 : 走 向 电 子 之 路 1 掌 握 FPGA 编 程 语 言 在 学 习 一 门 技 术 之 前 我 们 往 往 从 它 的 编 程 语 言 开 始, 就 如 学 习 单 片 机 一 样, 我 们 从 C 语 言 开 始, 掌 握 了 C 语 言, 开 发 单 片 机 就 不 是 什 么 难 事 了 学 习 FPGA 也 是 如 此,FPGA 的 编 程 语 言 有 两 种 :VHDL 和 Verilog, 这 两 种 都 适 合 用 于 FPGA 的 编 程,VHDL 比 Veirlog 早 出 现, 由 美 国 的 军 方 组 织 开 发, 在 1987 年 成 为 了 IEEE 的 标 准 ;Verilog 则 是 由 民 间 一 家 普 通 的 公 司 私 有 财 产 转 化 而 来, 基 于 其 优 越 性, 在 1995 成 为 了 IEEE 标 准 VHDL 在 欧 地 区 应 用 的 较 为 广 泛, 而 Verilog 在 中 国 美 国 日 本 台 湾 等 地 应 用 较 为 广 泛, 笔 者 比 较 推 崇 的 是 Verilog, 因 为 它 非 常 易 于 学 习, 很 类 似 于 C 语 言, 如 果 具 有 C 语 言 基 础 的 人, 只 需 要 花 很 少 的 时 间 便 能 掌 握 Verilog, 而 VHDL 较 为 抽 象, 学 习 需 要 一 段 较 长 的 时 间 如 果 是 学 生, 学 习 Verilog 最 好 的 时 期 是 在 大 学 二 年 级, 与 数 字 电 路 同 步 学 习, 不 仅 能 够 理 解 数 字 电 路 实 现 的 方 式, 更 能 通 过 FPGA 将 数 字 电 路 得 以 实 现, 笔 者 发 现 华 中 科 技 大 学 康 华 光 教 授 主 编 的 电 子 技 术 基 础 ( 数 字 部 分 ) 非 常 好, 可 以 说 是 一 本 与 时 俱 进 的 教 材, 在 其 中 介 绍 了 Verilog 语 言, 并 且 在 每 一 章 的 最 后 一 节 都 介 绍 了 如 何 使 用 Verilog 建 模 实 现 相 关 数 字 电 路 的 内 容, 非 常 适 合 大 二 学 习 FPGA 的 学 生, 大 三 大 四 的 学 生 还 可 以 进 一 步 将 Verilog 进 行 强 化, 学 习 北 京 航 天 航 空 大 学 的 夏 宇 闻 教 授 编 写 的 Verilog 数 字 系 统 设 计 教 程 ( 第 二 版 ) 可 以 比 较 全 面

地 详 细 地 掌 握 Verilog 的 基 本 语 法, 对 大 二 学 习 的 内 容 进 一 步 的 巩 固 和 强 化 如 果 是 其 他 初 学 者, 可 以 直 接 借 助 Verilog 数 字 系 统 设 计 教 程 ( 第 二 版 ) 即 能 对 Verilog 的 语 法 进 行 全 面 的 掌 握 这 是 学 习 FPGA 的 第 一 步, 也 是 必 不 可 少 的 一 步 2 选 择 合 适 的 硬 件 开 发 平 台 除 了 学 习 编 程 语 言 以 外, 更 重 要 的 是 实 践, 将 自 己 设 计 的 程 序 能 够 在 真 正 的 FPGA 里 运 行 起 来, 这 时 我 们 需 要 一 个 硬 件 平 台 的 支 持 目 前 市 场 销 售 FPGA 开 发 板 的 厂 商 很 多, 但 大 多 只 提 供 些 简 单 的 代 码, 没 有 详 尽 的 文 档 和 教 程 提 供 给 初 学 者 经 验 表 明, 很 多 学 生 在 学 习 FPGA 设 计 技 术 的 过 程 中, 虽 然 刚 开 始 学 习 热 情 很 高, 但 真 正 坚 持 下 来 一 直 到 学 会 的 却 寥 寥 无 几, 除 了 学 生 个 人 毅 力 的 因 素 外, 另 外 一 个 更 主 要 的 原 因 就 是 所 选 的 开 发 板 缺 少 配 套 的 说 明 文 档 和 手 把 手 系 列 的 入 门 教 程 原 本 FPGA 的 学 习 门 槛 相 对 于 单 片 机 来 说 就 高 了 不 少, 再 加 上 缺 少 手 把 手 系 列 教 程 资 料, 这 就 给 初 学 者 学 习 FPGA 增 添 了 更 多 的 困 难, 很 多 初 学 者 因 为 找 不 到 入 门 的 方 法 而 渐 渐 失 去 了 学 习 FPGA 的 兴 趣 和 信 心 所 以 初 学 者 在 选 择 开 发 板 的 时 候 要 选 择 配 套 资 料 全 的 和 售 后 服 务 好 的 开 发 板, 个 人 推 荐 艾 米 电 子 工 作 室 的 开 发 套 件 就 特 别 适 合 初 学 者 3 选 择 软 件 开 发 平 台 目 前 主 要 的 FPGA 厂 商 有 Altera xilinx lattice 都 提 供 的 了 各 自 的 FPGA 开 发 环 境, 分 别 是 :Altera 的 Quartus II,Xilinx 的 ISE,Lattice 的 isplever 我 们 可 以 选 择 先 熟 悉 一 家 公 司 的 环 境 ( 或 者 根 据 开 发 板 的 具 体 芯 片 选 择 厂 商 环 境 ), 以 后 根 据 器 件 选 择 需 要, 再 去 熟 悉 其 他 的 环 境, 学 习 周 期 就 可 以 短 了 作 者 选 择 的 Altera 公 司 的 Quartus II 开 发 软 件, 感 觉 其 界 面 友 好 而 且 目 前 资 料 稍 多 一 些 比 较 适 合 初 学 者 4 技 术 进 行 巩 固 和 升 华 对 于 初 学 者 来 说, 有 了 一 定 语 法 基 础 和 合 适 的 硬 件 开 发 平 台 并 熟 悉 了 软 件 开 发 环 境 后, 应 该 将 其 继 续 的 巩 固 和 升 华, 可 以 按 照 开 发 板 厂 商 提 供 的 实 验 教 程 进 行 学 习, 先 看 别 人 的 代 码, 特 别 是 原 厂 提 供 的 代 码, 这 些 代 码 应 该 代 表 了 比 较 高 的 FPGA 设 计 水 平, 从 中 我 们 可 以 学 习 两 个 方 面 的 知 识 : 一 是 相 对 比 较 大 规 模 的 逻 辑 设 计 如 何 组 织 模 块 结 构, 二 是 局 部 应 用 处 理, 可 以 照 搬, 作 为 我 们 开 发 时 的 模 板 熟 读 唐 诗 三 百 首, 不 会 作 诗 也 会 吟, 看 多 了, 就 会 习 惯 的 学 会 他 们 的 开 发 模 式, 我 有 这 样 的 体 会, 看 多 了, 很 多 东 西 思 想 上 已 经 把 它 当 作 是 自 己 的

理 所 当 然 的 东 西 了, 实 际 一 做, 手 生 的 很, 遇 到 很 多 问 题, 解 决 这 些 问 题, 这 个 过 程 就 通 过 了, 学 习 就 需 要 这 么 个 过 程 把 别 人 的 代 码 理 解 消 化 后, 就 可 以 自 己 试 着 写 点 代 码, 然 后 在 开 发 板 上 验 证 FPGA 技 术 是 不 断 发 展 变 化 的, 罗 马 不 是 一 天 建 成 的, 要 掌 握 FPGA 技 术 的 精 髓, 需 要 设 计 者 在 实 践 中 不 懈 地 摸 索 与 积 累, 逐 步 提 高 自 己 的 设 计 水 平 FPGA 设 计 有 点 象 围 棋 : 易 学 难 精 需 要 我 们 不 断 拓 宽 知 识 面, 不 厌 其 繁 的 去 尝 试, 仔 细 去 看 编 译 综 合 报 告, 时 序 分 析 报 告, 并 去 尝 试 提 升 性 能, 从 底 层 更 深 入 的 去 理 解 硬 件 电 路 的 设 计, 改 进 尝 试 性 能 的 提 高 原 文 地 址 : 学 习 CPLD/FPGA 的 几 点 建 议 作 者 : 走 向 电 子 之 路 1. 关 于 语 言 Verilog 和 VHDL 两 种 语 言 差 不 多, 个 人 感 觉 争 论 学 习, 使 用 何 种 语 言 没 有 太 大 的 意 义, 一 般 情 况 项 目 组 公 司 使 用 2 种 语 言 的 人 都 有, 这 就 要 求 FPGA 设 计 人 员 对 于 2 两 种 语 言 都 要 熟 悉, 但 精 通 1 种 就 行 了 比 如 你 用 Verilog 写 代 码, 别 人 用 VHDL 写 的 代 码 你 能 看 懂 就 行 了 2. 关 于 器 件 当 初 在 的 时 候 不 知 道 为 什 么 对 XILINX 鬼 迷 心 窍, 对 ALTERA 有 点 反 感, 有 关 ALTERA 的 资 料 一 般 都 不 看, 实 际 上, 一 般 公 司 XILINX ALTERA LATTICE 的 产 品 都 会 用, 主 要 取 决 项 目 要 实 现 的 功 能, 成 本 等 等 所 以, 对 于 入 门 者 来 说, 一 般 精 通 1 家 公 司 的 产 品, 对 其 他 几 家 公 司 的 产 品 了 解 熟 悉 一 下 就 可 以 了, 等 到 工 作 中 用 得 到 的 时 候 不 至 于 从 头 开 始 学, 其 实 几 家 公 司 的 产 品 都 差 不 多 的, 没 什 么 本 质 的 区 别, 区 别 只 是 公 司 提 供 的 技 术 支 持 参 考 设 计 是 否 完 善, 个 人 感 觉 XILINX 的 参 考 设 计 还 是 比 较 完 善 的 3. 关 于 参 考 书 其 实 参 考 书 不 在 多, 在 于 精, 由 于 我 个 人 主 要 使 用 Verilog, 在 此 推 荐 几 本 : 1. Verilog 数 字 系 统 设 计 教 程, 夏 宇 闻, 北 京 航 空 航 天 大 学 出 版 社

2. 设 计 与 验 证 -VerilogHDL,EDA 先 锋 工 作 室, 人 民 邮 电 出 版 社 3. FPGA/CPLD 设 计 工 具 XILINX ISE 使 用 祥 解,EDA 先 锋 工 作 室, 人 民 邮 电 出 版 社 4. ALTERA FPGA-CPLD 设 计 ( 基 础 篇 ),EDA 先 锋 工 作 室, 人 民 邮 电 出 版 社 4. 关 于 开 发 板 对 于 刚 入 门 的 人 来 说, 拥 有 1 块 开 发 板 可 以 起 到 事 半 功 倍 的 效 果 当 初 在 学 校 学 习 的 时 候, 考 虑 买 开 发 板 的 时 候, 追 求 FPGA 的 逻 辑 门 比 较 多, 其 实 这 是 没 有 必 要 的, 我 在 学 校 的 时 候 买 了 一 块 Spartan-3 的 40 万 门 开 发 板, 对 于 入 门 者 来 说 根 本 就 用 不 了 这 么 大 的 芯 片,20 万 门 甚 至 5 万 门 的 已 经 足 够 了 当 然 开 发 板 上 的 其 他 资 源 要 尽 量 丰 富 比 如 按 键 七 段 数 码 管 EEPROM 串 口 等 等 5. 参 考 设 计 由 于 刚 刚 入 门, 我 们 有 时 候 不 知 道 如 何 写 程 序, 回 想 我 当 初 连 4 分 频 电 路 都 不 知 道 该 怎 么 写 其 实 XILINX ALTERA 等 公 司 的 网 站 上 都 有 相 当 多 的 参 考 设 计 和 设 计 源 代 码, 多 多 利 用 这 些 公 司 提 供 的 资 源, 是 学 习 CPLD/FPGA 的 一 条 捷 径 比 如 矩 阵 键 盘 串 行 通 信 (UART) IIC 等 XILINX 公 司 的 网 站 上 都 有 参 考 设 计 和 源 代 码 原 文 地 址 : 个 人 总 结 的 FPGA 学 习 流 程 作 者 : 乖 乖 自 己 总 结 的 FPGA 学 习 流 程, 仅 供 参 考,^-^ ^-^ 熟 悉 数 字 电 路, 门 电 路, 组 合 逻 辑 电 路 时 序 逻 辑 电 路 --------------> 熟 悉 verilog/vhdl 语 法 --------------------- ----> 用 verilog 实 现 基 本 的 数 字 电 路 ( 组 合 逻 辑 电 路 时 序 逻 辑 电 路 )------->

买 一 个 功 能 稍 微 多 一 点 的 开 发 板, 驱 动 一 些 基 本 器 件, 熟 悉 开 发 工 具 (ISE,QuartusII,modelsim), 进 一 步 熟 练 verilog/vhdl-----------------------> 熟 悉 FPGA 常 用 设 计 技 巧 和 方 法 ( 串 并 转 换 乒 乓 操 作 同 步 设 计 等 等 ), 最 好 用 verilog/vhdl 去 实 现 这 些 技 巧 ------------------------------------------ -> 较 复 杂 的 数 字 系 统 设 计 (ROM,RAM,FIFO 等 等 ), 并 熟 练 使 用 FPGA 内 部 资 源 及 常 用 IP 核 (DLL,PLL,ROM,RAM, 双 口 RAM,DCFIFO 等 )------> 找 一 个 FPGA 高 级 应 用 的 方 向, 朝 那 个 方 向 发 展, 比 如,FPGA 数 字 信 号 处 理 FPGA 图 像 处 理 FPGA 视 频 处 理 FPGA 的 PCI 数 据 采 集 卡 和 数 字 I/0 卡 ( 现 在 的 数 据 采 集 卡 和 数 字 I/O 卡 都 用 FPGA),FPGA 在 通 信 方 面 的 应 用 FPGA 嵌 入 式 的 应 用 原 文 地 址 :FPGA 设 计 人 员 的 进 阶 路 线 作 者 : 蝶 妖 从 技 术 层 面 来 讲, 可 编 程 逻 辑 领 域 是 目 前 和 未 来 半 导 体 行 业 最 活 跃 的 领 域 之 一, 不 再 是 单 一 地 用 于 IC 设 计 的 原 型 验 证, 更 多 地 用 于 提 供 集 成 的 系 统 级 解 决 方 案 现 代 的 FPGA 不 再 仅 仅 是 可 编 程 逻 辑, 而 是 介 于 ASIC 和 FPGA 之 间 的 混 合 芯 片, 包 含 微 处 理 器 收 发 器 以 及 许 多 其 它 单 元 所 以 对 FPGA 设 计 人 员 的 要 求 也 越 来 越 高, 已 超 出 单 一 的 逻 辑 设 计 范 畴 因 此, 对 于 FPGA 初 学 者 来 讲, 需 要 明 确 个 人 的 进 阶 路 线, 进 而 掌 握 快 速 开 发 的 方 法 下 面 给 出 作 者 个 人 的 一 些 观 点 首 先, 熟 悉 一 门 硬 件 设 计 语 言 (VHDL 或 Verilog HDL), 因 为 不 管 在 哪 种 应 用 领 域, HDL 语 言 都 是 FPGA 开 发 的 基 础 目 前 国 内 使 用 Verilog HDL 语 言 的 开 发 人 员 较 多 一 些, 因 此 推 荐 读 者 学 习 Verilog HDL 正 因 如 此, 本 书 的 实 例 都 通 过 Verilog HDL 实 现, 并 在 附 录 中 给 出 其 简 要 的 语 法 说 明 要 深 入 学 习 Verilog HDL 语 言 的 读 者, 可 参 阅 参 考 文 献 [2] 其 次, 掌 握 ISE Design Suit 相 关 软 件 的 使 用 方 法 ISE 软 件 可 以 完 成 设 计 输 入 综 合 仿 真 实 现 和 下 载, 涵 盖 了 FPGA 开 发 的 全 过 程, 从 中 读 者 可 以 真 切 体 会 到 FPGA 开 发 全 过 程 对 于 嵌 入 式 开 发 人 员, 还 需 要 掌 握 EDK 软 件 操 作 当 掌 握 软 件 的 基 本 用 法 后, 可 以 深 入 了 解 各 工 具 组 件, 如 综 合 工 具 XST 布 局 布 线 工 具 PAR 等 的 运 行 机 制, 以 便 更 好 地 在

设 计 中 利 用 其 特 性 本 书 以 及 其 姐 妹 篇 ISE Design Suit 10.1 开 发 指 南 (DSP 和 嵌 入 式 开 发 ) 则 定 位 于 这 一 阶 段 第 三, 熟 悉 Xilinx FPGA 芯 片, 包 括 不 同 类 型 资 源 的 性 能 特 点 和 使 用 方 法 此 时,Xilinx 所 发 布 的 文 档 是 首 要 参 考 资 料 Xilinx 针 对 每 个 系 列 的 FPGA 都 提 供 了 丰 富 而 全 面 的 文 档, 所 以 在 开 始 任 何 一 个 系 列 的 FPGA 设 计 前, 最 好 到 Xilinx 网 站 (www.xilinx.com), 将 该 系 列 FPGA 的 页 面 上 将 所 有 的 文 档 都 下 载 下 来, 然 后 有 针 对 性 的 做 参 考 第 四, 参 考 xilinx 推 出 的 开 发 板 以 及 相 应 的 参 考 设 计, 这 是 向 高 级 进 阶 最 有 价 值 的 部 分 Xilinx 在 网 上 针 对 每 个 系 列 的 fpga 都 有 文 档 说 明, 并 都 给 出 原 理 图 其 开 发 板 的 文 档 说 明 非 常 详 细 详 细, 也 很 规 范, 有 很 大 的 参 考 价 值 此 外, 在 那 些 开 发 板 里 也 有 众 多 的 外 围 接 口 电 路, 基 本 涵 盖 了 常 用 的 应 用 场 合 参 考 外 围 电 路 芯 片 的 数 据 手 册, 仔 细 体 会 设 计 的 细 节 和 应 用 方 法 作 为 硬 件 工 程 师, 阅 读 手 册 是 一 项 基 本 技 能 当 然, 在 具 备 硬 件 平 台 的 基 础 上, 参 考 Xilinx 网 上 的 开 发 板 是 进 阶 路 线 中 捷 径 的 捷 径 第 五, 动 手 调 通 一 块 板 子 有 PCB 设 计 能 力 的 读 者, 可 自 行 设 计 ; 否 则 可 购 买 相 应 的 开 发 板, 将 上 面 所 有 的 硬 件 外 设 调 通, 并 参 照 类 似 的 开 发 板, 独 立 完 成 Xilinx 官 方 的 参 考 设 计 完 成 这 一 步, 就 步 入 高 级 设 计 的 大 门 了 第 六, 由 于 FPGA 芯 片 以 及 开 发 技 术 发 展 很 快, 因 此 不 仅 要 在 工 作 中 累 积 经 验, 还 应 该 关 注 该 行 业 的 新 技 术 和 新 动 向, 只 有 这 样 才 能 始 终 站 在 高 处 整 体 看 来,FPGA 开 发 入 门 简 单, 进 阶 阶 段 不 仅 难 度 较 大 所 需 知 识 面 广, 还 是 一 个 繁 琐 的 工 作 同 时 如 果 想 从 底 层 更 深 入 的 理 解 硬 件 设 计, 还 需 需 要 深 厚 的 理 论 支 持 因 此 FPGA 开 发 是 一 条 平 坦 但 十 分 陡 峭 的 路 原 文 地 址 :FPGA 设 计 学 习 经 验 小 谈 作 者 : 宇 可 很 久 没 有 发 帖 子 了, 很 对 不 住 大 家 工 作 上 已 经 不 做 FPGA 了, 并 且 工 作 上 太 忙 今 天 跟 一 个 人 聊 FPGA, 我 就 将 我 当 时 的 一 些 话 贴 出 来, 大 家 就 当 随 便 看 看, 浪 费 一 两 分 钟 时 间 有 人 问 我, 三 态 门 自 己 写 了 一 个 程 序, 却 调 试 不 出 来 当 然, 我 现 在 也 没 有 用 语 言 自 己 写 一

个 三 态 门 出 来, 我 更 习 惯 Ip Core 里 面 的 Tribuffer 自 己 编 写 的, 是 需 要 有 点 技 巧, 尤 其 是 在 控 制 信 号 那 个 地 方 最 好 还 是 用 ip core, 用 ip core 的 好 处 在 于 整 个 电 路 非 常 清 晰 我 曾 经 尝 试 着 自 己 写 一 个 三 态 门, 但 是 调 试 过 程 中 发 现 问 题 很 多, 所 有 后 来 干 脆 用 系 统 提 供 的 了 另 外, 她 说 学 习 语 言 学 了 一 个 月, 我 觉 得 大 可 没 有 这 个 必 要 语 言 那 东 西, 只 是 工 具 并 且, 常 用 的 语 法 也 就 那 么 多, 所 以 根 本 没 有 必 要 去 专 门 学 习 最 好 是 用 到 的 时 候 去 查 一 下 书, 或 者 查 一 下 外 国 人 写 的 那 个 电 子 版 的 handbook 拿 到 一 个 设 计 要 求 后, 首 先 就 用 你 学 到 的 数 字 电 路 知 识 把 整 个 系 统 大 体 给 搭 一 个 原 理 图 出 来, 就 像 是 用 protel 作 电 路 板 一 样 什 么 地 方 能 用 一 个 译 码 器 就 可 以 解 决 了, 什 么 地 方 能 用 一 个 复 用 器 就 可 以 解 决 了, 等 等 等 到 你 明 白 了 这 些, 就 应 该 很 容 易 的 做 FPGA 了 我 一 开 始 也 是 总 在 看 别 人 说 哪 个 语 言 好 \ 哪 个 工 具 好, 并 且 一 开 始 觉 得 原 理 图 设 计 输 入 方 法 是 最 笨 的, 但 是 到 后 来, 我 忽 然 发 现, 这 才 是 真 正 的 高 手 系 统 设 计 的 顶 层 最 好 采 用 原 理 图 模 式, 这 样 整 个 系 统 非 常 清 晰, 便 于 多 人 和 自 己 维 护, 而 在 一 些 低 层 模 块, 可 以 用 ip core 的, 尽 量 用 ip core; 不 行 的, 就 把 功 能 细 分, 每 一 个 子 功 能 写 一 个 vhd 或 v 文 件, 然 后 编 译 成 symbol, 在 原 理 图 中 调 用 symbol 我 只 是 在 这 里 泛 泛 而 谈, 希 望 能 够 对 初 学 者 有 一 点 帮 助, 如 果 有 说 得 不 对 的 地 方, 希 望 大 家 多 多 指 正 by channelelle ******************************************************************* 其 实 FPGA 不 是 学 会 的, 是 做 会 的 遇 到 问 题, 解 决 问 题 和 总 结 经 验, 不 断 往 复, 水 平 就 提 高 了 刚 开 始 做, 谁 都 会 遇 到 问 题 这 时 候 不 要 动 不 动 就 张 口 问 别 人, 要 自 己 多 想 一 想, 试 一 试 比 如, 刚 焊 好 的 板 子, 上 电 后, 下 载 不 了, 这 是 一 个 新 手 经 常 遇 到 的 问 题 一 般 来 说, 大 多 数 人 会 去 检 查 下 载 电 路 的 原 理 图, 如 果 发 现 和 正 确 的 原 理 图 没 有 区 别 就 没 办 法 了, 开 始 怀 疑 芯 片 是 不 是 坏 了, 焊 接 是 不 是 有 问 题, 是 不 是 哪 里 有 干 扰 啊 等 等 而 有 的 细 心 一 些 的 人, 就 会 仔 细 的 看 看 下 载 的 原 理, 信 号 的 时 序, 用 示 波 器 看 看 板 上 信 号 的 时 序, 一 步 一 步 的 找 原 因 如 果 没 有 找 到, 就 会 仔 细 检 查 FPGA 的 电 路, 从 电 源 设 计, 到 去 耦 电 容 摆 放 等 等 方 面 去 动 手 查 找 原 因 如 果 觉 得 那 里 有 问 题, 就 动 手 改 一 看 看, 测 一 侧 有 没

有 改 变, 而 不 是 坐 着 想 哪 里 出 问 题 可 能 最 后 就 是 芯 片 坏 了, 或 者 没 有 焊 接 好, 但 是 后 者 确 在 这 个 过 程 中 学 到 了 很 多 东 西, 至 少 对 FPGA 下 载 的 原 理 了 解 的 十 分 清 楚 以 上 是 随 便 举 的 一 个 例 子, 还 有 一 点 要 忠 告 大 家 的 就 是 不 要 轻 易 的 怀 疑 芯 片 有 问 题, 如 果 电 路 工 作 不 正 常, 那 么 99% 的 原 因 是 和 设 计 有 关 的, 是 可 以 找 到 确 定 的 原 因 的, 而 不 是 偶 然 的, 即 使 是 噪 声 或 者 干 扰 by RedLogic **************************************************************** FPGA 这 东 西 最 需 要 的 就 是 自 己 去 实 际 动 手 编 写 程 序, 哪 怕 仅 仅 是 编 写 一 个 737, 只 有 在 不 断 的 编 写 调 试 的 过 程 中 才 能 找 到 感 觉 同 意 楼 上 的 观 点, 不 要 过 分 的 去 看 语 法, 常 用 的 其 实 不 多 我 刚 开 始 也 是 认 为 整 个 系 统 全 部 用 语 言 编 写 最 好, 通 过 个 人 的 经 验 教 训 才 发 现, 顶 层 文 件 最 后 用 原 理 图 还 有 个 建 议 就 是 平 时 多 自 己 编 写 联 系 一 些 东 西, 比 如 花 点 时 间 编 一 点 任 意 分 频 器 啊 锁 相 环 啊 什 么 的, 从 中 会 找 到 很 多 乐 趣 当 然 必 须 要 遇 到 很 多 困 难 才 有 乐 趣 了 如 果 什 么 困 难 都 没 有, 那 只 能 说 您 是 高 手 了 还 有 就 是 要 互 相 之 间 多 讨 论, 每 个 人 的 观 点 都 可 能 是 你 学 习 的 内 容 也 乱 想 到 这 里. 还 有 要 补 充 一 点 就 是 如 果 是 做 系 统 的 设 计, 最 后 一 定 用 同 步 系 统 by bluetooth884 **************************************************************** 我 是 一 个 新 新 手, 我 也 来 说 几 句 我 开 始 学 EDA 也 有 一 年 时 间, 开 始 我 学 verilog 语 言, 当 时 没 有 条 件, 电 脑 没 有, 学 习 板 也 没 有 我 就 天 天 看 语 法, 看 别 人 的 程 序 一 直 到 今 年 3 月 份 条 件 才 改 善, 有 自 己 的 电 脑 和 学 习 板, 老 师 教 是 用 VHDL, 所 以 我 就 改 学 这 个 了 因 为 要 准 备 9 月 份 的 电 子 竞 赛, 所 以 要 提 前 学, 凭 老 师 教 的 那 点 东 西 肯 定 是 不 够 的, 我 只 花 了 一 个 星 期 的 时 间 把 很 常 用 的 语 法 记 住, 然 后 再 花 两 个 星 期 的 时 间 看 别 人 的 程 序, 从 别 人 的 程 序

中 学 会 基 本 格 式 开 始 进 步 很 慢, 主 要 阻 力 是 软 件 不 会 使 用, 全 凭 自 己 去 摸 索 要 很 长 时 间, 4 月 12,13 两 天 听 了 潘 松 老 师 的 两 天 课, 他 主 要 是 讲 quartus 的 使 用, 感 觉 那 两 天 学 了 很 多 东 西 软 件 基 本 会 使 用 后 开 始 自 己 慢 慢 的 编 小 程 序, 但 真 正 要 提 高 还 是 具 体 做 点 什 么 东 西 接 下 来 两 个 星 期 老 师 布 置 了 一 个 数 字 频 率 计 的 题 目,FPGA 做 处 理,MCU 做 控 制 但 我 对 单 片 机 不 熟 悉, 结 果 下 来 感 觉 是 单 片 机 不 能 从 FPGA 读 数 据, 题 目 没 有 完 成 但 这 次 具 体 的 应 用 让 我 也 学 到 很 多 东 西, 系 统 时 钟, 保 持 时 间, 建 立 时 间 等 等 一 些 很 基 本 的 概 念, 这 些 在 高 手 们 看 来 可 能 是 再 简 单 不 过 的 东 西, 但 一 个 新 手 全 凭 自 己 的 摸 索 去 了 解 这 些 东 西 已 经 是 很 不 容 易 了 我 没 有 夸 自 己 的 意 思, 我 是 想 说 真 正 要 学 到 东 西, 一 定 要 投 入 到 具 体 的 项 目 中 去, 这 些 话 前 辈 们 已 经 说 过 很 多 次 还 有 一 点 想 说 的 就 是, 新 手 不 要 好 高 骛 远, 我 就 犯 了 这 样 的 错 误, 最 基 本 的 没 搞 懂, 我 就 想 去 学 嵌 入 式 系 统 我 现 在 水 平 还 非 常 非 常 有 限, 真 正 要 我 独 立 完 成 一 个 小 系 统 的 设 计 还 很 困 难 有 很 多 基 本 的 东 西 我 还 不 懂, 但 我 很 想 学 好 这 个 上 次 那 个 题 目 没 有 做 出 来, 老 师 好 像 不 怎 么 相 信 我 的 EDA 了 ( 呵 呵 ) 再 老 师 对 这 个 不 熟 悉, 他 就 什 么 东 西 只 想 用 模 电 和 单 片 机 做 出 来, 其 实 给 我 很 大 感 觉 就 是 对 于 同 一 个 题 目 EDA 可 以 在 很 大 程 度 上 弱 化 单 片 机, 使 题 目 变 的 更 加 容 易 实 现 所 以 现 在 要 加 紧 学 好, 到 9 月 份 还 不 到 半 年 的 时 间 了, 我 能 学 成 什 么 样 子 呢? 我 们 这 里 教 EDA 的 老 师 很 少, 就 2 个, 给 我 们 上 课 的 老 师 讲 了 半 学 期 的 ABEL 很 多 不 懂 的 东 西 没 人 问, 只 能 在 这 里 发 发 帖 子 问 问 这 里 热 心 的 人 了 感 谢 曾 经 给 过 我 莫 大 帮 助 的 DX 们 希 望 你 们 的 帮 助 让 我 有 质 的 飞 跃! by fenglouto1 *************************************************************** to channelelle: 虽 然 前 面 回 文 的 评 价 还 可 以, 但 是 我 想 我 还 是 应 该 很 直 接 要 指 出 你 其 中 很 多 的 错 误 思 想, 我 不 想 有 更 多 的 受 到 误 导, 请 原 谅 我 说 的 比 较 直 接 系 统 级 的 设 计 我 们 为 什 么 还 需 要 画 原 理 图? 我 们 在 总 体 设 计 方 案 中 可 以 将 一 级 模 块 划 分 好, 将 一 级 模 块 的 接 口 时 序 定 义 好, 完 完 全 全 没 有 必 要 用 画 原 理 图, 除 非 你 在 做 设 计 之 前 是 不 做 方 案 的 或 者 方 案 做 的 很 差 我 们 要 求 设 计 要 尽 量 的 做 到 与 器 件 无 关 ( 除 了 FIFO PLL 等 ), 你 这 样 画 原 理 怎 么 实 现 平 台 的 无 关 性? 如 果 我 之 前 用 的 是 altera 的 器 件, 现 在 要 转 成 xilinx 的, 你 那 原 理 图 还 能 用? 一 般 来 说 芯 片 厂 家 的 EDA 工 具 综 合 性 能 都 一 般, 如 果 你 要 用 第 三 方 综 合 工 具 怎 么 办?

还 有, 你 这 样 画 原 理 图 那 仿 真 怎 么 办? 你 该 不 会 用 quartus 下 画 波 形 图 吧? 我 们 大 的 设 计 用 modelsim 都 要 跑 几 个 小 时, 你 画 原 理 图 怎 么 在 第 三 方 仿 真 软 件 下 做 仿 真? 还 有, 如 果 画 原 理 图 有 用, 人 家 还 要 弄 个 systemc E 语 言 system verilog 做 什 么? 另 外, 你 为 什 么 连 写 个 三 态 门 还 要 调 core, 一 行 就 可 以 描 述 出 来 的 呀! by wangdian ************************************************************* 看 了 大 家 的 发 言, 觉 得 自 己 还 是 要 暴 露 一 下 自 己 的 问 题 了 我 呢, 毕 业 时 到 公 司 直 接 就 接 触 了 公 司 以 前 的 设 计 内 容, 为 了 更 快 的 完 成 任 务, 只 能 在 以 前 的 系 统 设 计 上 修 修 改 改, 慢 慢 的 发 现 一 些 问 题, 但 是 也 只 能 一 步 一 步 来, 所 以 就 开 始 学 习 语 言, 因 为 有 些 东 西 确 实 用 语 言 来 设 计 输 入 比 较 快 但 是 为 了 和 以 前 的 系 统 一 起 工 作, 就 有 了 很 多 限 制 现 在 一 直 比 较 烦 恼, 为 了 这 个 系 统 不 知 道 何 时 才 是 一 个 头 自 己 设 计 其 实 已 经 比 较 习 惯 了 原 理 图 的 形 式, 因 为 刚 开 始 的 时 候 都 学 习 的 那 些, 在 这 个 转 换 过 程 中 是 不 是 都 会 有 一 段 比 较 迷 茫? 谢 谢 大 侠 们 分 享 那 么 多 的 心 得 和 知 识, 在 这 里 我 们 学 习 到 了 很 多 by kuangshunlan ************************************************************** 看 到 了 很 多 和 自 己 相 似 的 经 历 TO wangdian:channelelle 的 意 思 你 可 能 理 解 错 了, 他 其 实 是 想 说, 对 系 统 而 言 要 模 块 化, 便 于 大 系 统 调 试, 调 用 IP CORE 是 一 种 优 化 快 捷 的 方 式 也 许 channelelle 的 思 想 更 适 合 技 术 的 市 场 化, 对 企 业 而 言 讲 求 的 是 效 率 速 度, 做 研 究 嘛, 你 可 以 从 三 级 管 去 研 究 起, 呵 呵 ~~ 这 也 是 北 京 与 深 圳 的 区 别, 不 可 否 认 北 京 牛 人 很 多 但 是 当 然 FPGA 还 是 属 于 硬 件, 对 综 合 出 来 的 各 个 功 能 模 块 要 有 深 刻 的 理 解, 尽 量 从 寄 存 器 级 去 考 虑 它 的 性 能, 而 不 是 行 为 级 by xiaozheng **************************************************************

: 同 意 wangdian 原 理 图 输 入 应 该 尽 量 抛 弃, 系 统 设 计 必 须 考 虑 前 期 调 试 后 期 维 护 和 移 植 xiaozheng 的 话 有 些 牵 强, 说 什 么 北 京 和 深 圳 的 区 别 就 是 风 凉 话 了, 大 家 都 是 搞 技 术 的, 就 事 论 事,IP Core 要 看 什 么 场 合, 三 态 门 一 句 话 就 搞 定 了 你 还 要 用 Ip core, 在 这 里 开 坛 讲 座 如 何 让 人 信 服? by duohaodai **************************************************************** re:duohaodai 我 不 反 对 各 分 模 块 用 语 言 来 描 述, 但 是 顶 层 用 原 理 图 描 述 条 理 更 加 清 晰, 也 方 便 别 人 参 阅, 元 件 例 化 一 大 堆 谁 明 白? 当 然, 如 果 你 的 资 料 整 理 的 比 较 好, 并 另 给 出 总 体 结 构 图 也 是 可 以 的, 移 植 的 确 是 个 问 题, 不 过 现 在 的 企 业 有 又 谁 同 时 在 使 用 几 个 平 台 的 呢 IPcore 为 什 么 老 是 要 咬 住 三 态 门 来 讨 论? 说 白 了, 大 多 数 企 业 干 的 就 是 调 函 数 包, 底 层 核 心 的 开 发 你 还 是 去 alteraxilinxmicosoftibm 去 研 究 吧 by xiaozheng *************************************************************** 我 也 来 说 两 句 吧, 做 设 计 前 就 应 该 考 虑 好 系 统 结 构, 这 叫 成 竹 在 胸 :) 而 具 体 到 设 计 实 现 阶 段 的 话, 原 理 图 输 入 是 没 有 必 要 地, 还 有 对 于 一 些 小 的 底 层 单 元, 比 如 shifter,mux,adder 等 等, 还 是 不 要 采 用 实 例 化 ip core 模 块 的 方 式 为 好, 用 HDL 语 言 描 述 就 好 了 ( 这 叫 引 用 模 块 的 方 式 叫 inference), 原 因 就 是 在 设 计 实 现 的 阶 段 要 充 分 考 虑 到 design portable,code reusable by chips *************************************************************

我 觉 得 大 家 有 些 误 解 原 理 图 输 入 方 法 了, 在 做 大 系 统 时, 一 定 要 自 顶 向 下 的 设 计, 当 每 个 底 层 模 块 用 语 言 设 计 完 毕 并 且 仿 真 调 试 OK 后, 将 其 编 译 为 图 形 模 块, 然 后 在 顶 层 用 原 理 图 输 入 的 方 法 调 用 这 些 模 块, 将 各 个 模 块 用 信 号 线 连 接 起 来, 构 成 整 个 系 统 这 里 所 说 的 原 理 图 输 入 的 方 法 并 不 是 一 定 要 用 各 种 标 准 的 逻 辑 元 件 组 装 电 路, 而 是 用 语 言 设 计 的 功 能 模 块 组 成 系 统 看 这 样 设 计 的 顶 层 文 件, 系 统 结 构 一 目 了 然, 这 和 纯 语 言 设 计 前 所 做 的 系 统 逻 辑 框 图 是 一 样 的, 都 是 为 了 清 晰 的 描 述 系 统 结 构 当 然, 是 用 纯 语 言 设 计 好, 还 是 用 图 形 输 入 法 设 计 顶 层 再 调 用 用 语 言 设 计 的 底 层 模 块 也 好, 我 看 这 两 种 方 法 都 好, 应 根 据 个 人 的 爱 好 和 习 惯 而 定, 就 象 用 VHDL 语 言 或 用 Verilog HDL 语 言 都 能 设 计 好 的 系 统 一 样, 大 家 说 呢? by 枫 *********************************************************** 各 位, 你 们 做 过 多 大 的 系 统 啊, 老 是 在 这 里 误 导 别 人? 这 篇 文 章 写 的 几 乎 全 是 误 导 别 人 的 话, 就 拜 托 你 们 别 在 叫 好 了! 层 次 结 构 不 是 靠 原 理 图 保 证 的, 是 靠 文 档! 系 统 级 建 模 也 不 会 用 原 理 图 去 做 啊, 不 然 大 家 去 弄 个 system C system verilog 做 什 么? by wangdian *********************************************************** 迫 不 及 待 的 看 完 六 页, 有 很 多 是 跟 我 想 法 相 同 的, 也 有 不 一 样 的 工 具 这 东 西 ( 包 含 语 言 ) 只 要 用 熟 了 应 该 都 好 用 但 相 比 之 下 肯 定 有 个 容 不 容 易 上 手 的 问 题, 当 然 前 提 是 都 对 新 手 而 言, 如 果 要 一 个 画 了 几 年 原 理 图 的 去 用 Verilog 或 是 VHDL 语 言, 当 然 感 觉 很 不 爽 我 个 人 认 为 为 什 么 在 有 了 原 理 图 设 计 法 的 前 提 下 又 开 发 出 Verilog 等 语 言, 肯 定 是 有 一 定 道 理 的 对 新 手 而 言, 这 些 语 言 绝 对 更 容 易 上 手, 而 且 还 有 很 多 其 它 的 优 点 但 肯 定 也 有 它 自 身 的 不 足, 呵 呵 重 要 的 不 是 开 发 工 具, 而 是 开 发 思 想

by dsp20tlh ********************************************************** 首 先 就 用 你 学 到 的 数 字 电 路 知 识 把 整 个 系 统 大 体 给 搭 一 个 原 理 图 出 来, 就 像 是 用 prote l 作 电 路 板 一 样 什 么 地 方 能 用 一 个 译 码 器 就 可 以 解 决 了, 什 么 地 方 能 用 一 个 复 用 器 就 可 以 解 决 了, 等 等 等 到 你 明 白 了 这 些, 就 应 该 很 容 易 的 做 FPGA 了 听 起 来 好 象 整 个 FPGA 设 计 都 是 在 做 数 字 电 路 设 计 了 by tianhun ********************************************************* 我 认 为, 你 说 的 非 常 客 观 也 很 诚 恳 我 也 作 了 一 段 时 间 的 FPGA 了 由 于 我 自 小 就 对 电 子 技 术 很 感 兴 趣, 经 常 摆 弄 一 些 电 子 器 件, 所 以 对 硬 件 的 理 解 更 深 入 一 些, 所 以 对 于 我 来 说, 我 开 始 做 FPGA 设 计 的 时 候, 就 是 直 接 从 原 理 图 输 入 开 始 的 我 认 为 这 样 容 易 理 解, 而 且 非 常 直 观 当 让 致 命 的 缺 点 就 是 设 计 移 植 性 能 不 好 我 现 在 也 在 强 迫 自 己 将 一 些 简 单 模 块 用 语 言 去 写 出 来, 封 装 成 模 块, 到 原 理 图 中 去 调 用 今 天 看 到 您 的 帖 子, 我 很 高 兴 自 己 的 一 些 设 计 方 法 可 以 得 到 高 手 的 认 同 我 现 在 也 是 刚 刚 开 始 学 习 Verilog 由 于 习 惯 于 理 解 原 理 图 输 入, 我 只 能 强 迫 自 己 去 用 语 言 因 为 很 多 人 都 告 诫 我, 很 多 大 公 司 都 要 求 用 语 言 进 行 设 计, 所 以 为 了 以 后 能 混 口 饭 吃, 还 是 要 学 些 语 言 我 的 邮 箱 地 址 :fylouis@126.com 期 待 着 与 高 手 交 流 经 验 与 心 得 by fylouis ******************************************************* 虽 然 来 晚 了, 还 是 要 双 手 赞 同 在 总 体 设 计 方 案 中 将 一 级 模 块 划 分 好, 将 接 口 时 序 定 义 好, 没 有 必 要 用 画 原 理 图 这 种 方 法 似 乎 清 楚, 但 是 既 然 把 设 计 都 能 画 出 来, 那 在 在 文 档 中 体 现 功 能 框 图 和 接 口 连 接 关 系 应 该 比 较 容 易, 可 能 在 设 计 初 期 修 改 方 案 采 用 原 理 图 比 较 方 便 而 已 我 们 采 用 高 级 语 言 来 设 计, 尽

量 要 作 到 和 器 件 无 关 况 且, 当 产 品 上 量 后, 要 不 要 投 ASIC 来 降 低 成 本? 当 工 艺 提 高 后, 采 用 ASIC 实 现 的 成 本 有 可 能 比 采 用 FPGA 低 很 多 这 个 时 候 就 出 现 问 题 了, 设 计 怎 么 移 植? 有 可 能 重 新 设 计, 仿 真 by goldlion98 ***************************************************** 在 FPGA 领 域 可 能 还 有 原 理 图 一 说, 但 在 ASIC 基 本 无 此 观 点, 可 能 说 玄 了 就 是 电 路 在 我 心, 基 本 两 个 字 同 步 对 于 设 计 而 言, 我 也 不 反 对 用 原 理 图, 因 为 每 个 人 都 有 一 个 学 习 得 过 程 成 长 的 过 程, 但 如 果 你 要 做 IC, 就 可 以 在 以 后 抛 调 原 理 图 对 于 初 学 者 可 以 先 用 原 理 图, 在 顶 层 用 原 理 图 是 一 些 FPGA 设 计 者 喜 欢 的 方 法, 其 实 无 可 厚 非 因 为 不 作 IC, 但 是 在 底 层 用 原 理 图 我 不 推 荐, 因 为 那 会 阻 碍 你 前 进 的 步 伐 by jjliu ***************************************************** 呵 呵, 在 FPGA 做 顶 层 模 块 时, 原 理 图 也 好, 程 序 描 述 也 好, 看 个 人 习 惯 了, 总 之 就 是 要 做 到 结 构 清 晰, 便 于 修 改 和 维 护 即 可 不 过 个 人 觉 得, 使 用 原 理 图 方 式 的 确 会 碰 到 程 序 移 植 方 面 的 问 题, 我 自 己 更 习 惯 于 用 程 序 来 描 述 各 模 块 之 间 的 连 接 至 于 看 前 面 帖 子 有 人 这 么 说 真 正 的 牛 人 都 是 搭 底 层 电 路 设 计 的 我 是 这 么 理 解 的, 能 用 底 层 电 路 搭 起 自 己 所 需 要 的 设 计 的, 证 明 ta 对 整 个 设 计 理 解 很 深, 理 解 已 经 到 了 rtl 级, 而 不 是 只 停 留 在 行 为 级 的 理 解 上 因 此 所 谓 之 牛 ~ 呵 呵, 个 人 理 解, 欢 迎 拍 砖 不 过, 还 是 觉 得 hdl 语 言 方 便 些, 当 然 可 能 有 人 觉 得 自 己 用 基 本 电 路 搭 更 得 心 应 手, 更 可 控 ; 但 如 果 你 能 够 充 分 地 理 解 你 用 hdl 语 言, 并 保 证 描 述 的 电 路 综 合 之 后 就 是 你 想 要 的, 那 我 觉 得 那 也 是 高 手 ~ 只 是 高 手 和 高 手 的 习 惯 不 同 而 已 :) 原 文 地 址 :VerilogHDL 设 计 经 验 作 者 : 走 向 电 子 之 路 规 则 #1: 建 立 时 序 逻 辑 模 型 时, 采 用 非 阻 塞 赋 值 语 句 ;

规 则 #2: 建 立 latch 模 型 时, 采 用 非 阻 塞 赋 值 语 句 ; 规 则 #3: 在 always 块 中 建 立 组 合 逻 辑 模 型 时, 采 用 阻 塞 赋 值 语 句 ; 规 则 #4: 在 一 个 always 块 中 同 时 有 组 合 和 时 序 逻 辑 时 时, 采 用 非 阻 塞 赋 值 语 句 ; 规 则 #5: 不 要 在 一 个 always 块 中 同 时 采 用 阻 塞 和 非 阻 塞 赋 值 语 句 ; 规 则 #6: 同 一 个 变 量 不 要 在 多 个 always 块 中 赋 值 ; 规 则 #7: 调 用 $strobe 系 统 函 数 显 示 用 非 阻 塞 赋 值 语 句 赋 的 值 ; 规 则 #8: 不 要 使 用 #0 延 时 赋 值 一 描 述 的 完 备 性 1, 敏 感 变 量 的 描 述 完 备 性,Verilog 中 用 always 块 设 计 组 合 逻 辑 电 路 时 : a, 在 赋 值 表 达 式 右 端 参 与 赋 值 的 所 有 信 号 都 必 须 在 always @( 敏 感 电 平 列 表 ) 中 列 出, b,always 中 if 语 句 的 判 断 表 达 式 必 须 在 敏 感 电 平 列 表 中 列 出, c, 如 果 在 赋 值 表 达 式 右 端 引 用 了 敏 感 电 平 列 表 中 没 有 列 出 的 信 号, 在 综 合 时 将 会 为 没 有 列 出 的 信 号 隐 含 地 产 生 一 个 透 明 锁 存 器 注 : 这 是 因 为 该 信 号 的 变 化 不 会 立 刻 引 起 所 赋 值 的 变 化, 而 必 须 等 到 敏 感 电 平 列 表 中 的 某 一 个 信 号 变 化 时, 它 的 作 用 才 表 现 出 来 即 相 当 于 存 在 一 个 透 明 锁 存 器, 把 该 信 号 的 变 化 暂 存 起 来, 待 敏 感 电 平 列 表 中 的 某 一 个 信 号 变 化 时 再 起 作 用, 纯 组 合 逻 辑 电 路 不 可 能 作 到 这 一 点, 综 合 器 会 发 出 警 告 Example1: input a,b,c; reg e,d; always @(a or b or c) begin e=d&a&b; d=e c; end Example2: input a,b,c; reg e,d; always @(a or b or c or d) begin

e=d&a&b; d=e c; end 2, 条 件 的 描 述 完 备 性 如 果 if 语 句 和 case 语 句 的 条 件 描 述 不 完 备, 也 会 造 成 不 必 要 的 锁 存 器 Example1: if (a==1'b1) q=1'b1; // 如 果 a==1'b0,q=? q 将 保 持 原 值 不 变, 生 成 锁 存 器! Example2: if (a==1'b1) q=1'b1; else q=1'b0; //q 有 明 确 的 值 不 会 生 成 锁 存 器! Example3: reg[1:0] a,q;... case (a) 2'b00 : q=2'b00; 2'b01 : q=2'b11; // 如 果 a==2'b10 或 a==2'b11,q=? q 将 保 持 原 值 不 变, 锁 存 器! Example4: reg[1:0] a,q;... case (a) 2'b00 : q=2'b00; 2'b01 : q=2'b11; default: q=2'b00; //q 有 明 确 的 值, 不 会 生 成 锁 存 器! 二 Verilog 中 端 口 的 描 述 1, 端 口 的 位 宽 最 好 定 义 在 I/O 说 明 中, 不 要 放 在 数 据 类 型 定 义 中 Example1: module test(addr,read,write,datain,dataout)

input[7:0] datain; input[15:0] addr; input read,write; output[7:0] dataout; // 要 这 样 定 义 端 口 的 位 宽! ---------- wire addr,read,write,datain; reg dataout;--------- Example2: module test(addr,read,write,datain,dataout) input datain,addr,read,write; output dataout;------- wire[15:0] addr; wire[7:0] datain; wire read,write; reg[7:0] dataout; // 不 要 这 样 定 义 端 口 的 位 宽!!----------- 2, 端 口 的 I/O 与 数 据 类 型 的 关 系 : 端 口 的 I/O 端 口 的 数 据 类 型 module 内 部 module 外 部 input wire wire 或 reg output wire 或 reg wire inout wire wire 3,assign 语 句 的 左 端 变 量 必 须 是 wire; 直 接 用 "=" 给 变 量 赋 值 时 左 端 变 量 必 须 是 reg! Example: assign a=b; //a 必 须 被 定 义 为 wire!! ******** begin a=b; //a 必 须 被 定 义 为 reg! end 三 以 触 发 器 为 例 说 明 描 述 的 规 范 性 1, 无 置 位 / 清 零 的 时 序 逻 辑 always @( posedge CLK) begin

Q<=D; end 2, 有 异 步 置 位 / 清 零 的 时 序 逻 辑 异 步 置 位 / 清 零 是 与 时 钟 无 关 的, 当 异 步 置 位 / 清 零 信 号 到 来 时, 触 发 器 的 输 出 被 置 为 1 或 0, 不 需 要 等 到 时 钟 沿 到 来 才 置 位 / 清 零 所 以, 必 须 要 把 置 位 / 清 零 信 号 列 入 always 块 的 事 件 控 制 表 达 式 always @( posedge CLK or negedge RESET) begin if (!RESET) Q=0; else Q<=D; end 3, 有 同 步 置 位 / 清 零 的 时 序 逻 辑 同 步 置 位 / 清 零 是 指 只 有 在 时 钟 的 有 效 跳 变 时 刻 置 位 / 清 零, 才 能 使 触 发 器 的 输 出 分 别 转 换 为 1 或 0 所 以, 不 要 把 置 位 / 清 零 信 号 列 入 always 块 的 事 件 控 制 表 达 式 但 是 必 须 在 always 块 中 首 先 检 查 置 位 / 清 零 信 号 的 电 平 always @( posedge CLK ) begin if (!RESET) Q=0; else Q<=D; end 四 结 构 规 范 性 在 整 个 芯 片 设 计 项 目 中, 行 为 设 计 和 结 构 设 计 的 编 码 是 最 重 要 的 一 个 步 骤 它 对 逻 辑 综 合 和 布 线 结 果 时 序 测 定 校 验 能 力 测 试 能 力 甚 至 产 品 支 持 都 有 重 要 的 影 响 考 虑 到 仿 真 器 和 真 实 的 逻 辑 电 路 之 间 的 差 异, 为 了 有 效 的 进 行 仿 真 测 试 : 1, 避 免 使 用 内 部 生 成 的 时 钟

内 部 生 成 的 时 钟 称 为 门 生 时 钟 (gated clock) 如 果 外 部 输 入 时 钟 和 门 生 时 钟 同 时 驱 动, 则 不 可 避 免 的 两 者 的 步 调 不 一 致, 造 成 逻 辑 混 乱 而 且, 门 生 时 钟 将 会 增 加 测 试 的 难 度 和 时 间 2, 绝 对 避 免 使 用 内 部 生 成 的 异 步 置 位 / 清 零 信 号 内 部 生 成 的 置 位 / 清 零 信 号 会 引 起 测 试 问 题 使 某 些 输 出 信 号 被 置 位 或 清 零, 无 法 正 常 测 试 3, 避 免 使 用 锁 存 器 锁 存 器 可 能 引 起 测 试 问 题 对 于 测 试 向 量 自 动 生 成 (ATPG), 为 了 使 扫 描 进 行, 锁 存 器 需 要 置 为 透 明 模 式 (transparent mode), 反 过 来, 测 试 锁 存 器 需 要 构 造 特 定 的 向 量, 这 可 非 同 一 般 4, 时 序 过 程 要 有 明 确 的 复 位 值 使 触 发 器 带 有 复 位 端, 在 制 造 测 试 ATPG 以 及 模 拟 初 始 化 时, 可 以 对 整 个 电 路 进 行 快 速 复 位 5, 避 免 模 块 内 的 三 态 / 双 向 内 部 三 态 信 号 在 制 造 测 试 和 逻 辑 综 合 过 程 中 难 于 处 理 原 文 地 址 :FPGA 与 CPLD 的 区 别 作 者 :maxdian 系 统 的 比 较, 与 大 家 共 享 : 尽 管 FPGA 和 CPLD 都 是 可 编 程 ASIC 器 件, 有 很 多 共 同 特 点, 但 由 于 CPLD 和 FP GA 结 构 上 的 差 异, 具 有 各 自 的 特 点 : 1CPLD 更 适 合 完 成 各 种 算 法 和 组 合 逻 辑,FPGA 更 适 合 于 完 成 时 序 逻 辑 换 句 话 说,F PGA 更 适 合 于 触 发 器 丰 富 的 结 构, 而 CPLD 更 适 合 于 触 发 器 有 限 而 乘 积 项 丰 富 的 结 构 2CPLD 的 连 续 式 布 线 结 构 决 定 了 它 的 时 序 延 迟 是 均 匀 的 和 可 预 测 的, 而 FPGA 的 分 段 式 布 线 结 构 决 定 了 其 延 迟 的 不 可 预 测 性 3 在 编 程 上 FPGA 比 CPLD 具 有 更 大 的 灵 活 性 CPLD 通 过 修 改 具 有 固 定 内 连 电 路 的 逻 辑 功 能 来 编 程,FPGA 主 要 通 过 改 变 内 部 连 线 的 布 线 来 编 程 ;FPGA 可 在 逻 辑 门 下 编 程, 而 CPLD 是 在 逻 辑 块 下 编 程 4FPGA 的 集 成 度 比 CPLD 高, 具 有 更 复 杂 的 布 线 结 构 和 逻 辑 实 现 5CPLD 比 FPGA 使 用 起 来 更 方 便 CPLD 的 编 程 采 用 E2PROM 或 FASTFL ASH 技 术, 无 需 外 部 存 储 器 芯 片, 使 用 简 单 而 FPGA 的 编 程 信 息 需 存 放 在 外 部 存 储 器 上, 使 用 方 法 复 杂 6CPLD 的 速 度 比 FPGA 快, 并 且 具 有 较 大 的 时 间 可 预 测 性 这 是 由 于 FPGA 是 门 级 编 程, 并 且 CLB 之 间 采 用 分 布 式 互 联, 而 CPLD 是 逻 辑 块 级 编 程, 并 且 其 逻 辑 块 之 间 的 互 联 是 集 总 式 的

7 在 编 程 方 式 上,CPLD 主 要 是 基 于 E2PROM 或 FLASH 存 储 器 编 程, 编 程 次 数 可 达 1 万 次, 优 点 是 系 统 断 电 时 编 程 信 息 也 不 丢 失 CPLD 又 可 分 为 在 编 程 器 上 编 程 和 在 系 统 编 程 两 类 FPGA 大 部 分 是 基 于 SRAM 编 程, 编 程 信 息 在 系 统 断 电 时 丢 失, 每 次 上 电 时, 需 从 器 件 外 部 将 编 程 数 据 重 新 写 入 SRAM 中 其 优 点 是 可 以 编 程 任 意 次, 可 在 工 作 中 快 速 编 程, 从 而 实 现 板 级 和 系 统 级 的 动 态 配 置 8CPLD 保 密 性 好,FPGA 保 密 性 差 9 一 般 情 况 下,CPLD 的 功 耗 要 比 FPGA 大, 且 集 成 度 越 高 越 明 显 随 著 复 杂 可 编 程 逻 辑 器 件 (CPLD) 密 度 的 提 高, 数 字 器 件 设 计 人 员 在 进 行 大 型 设 计 时, 既 灵 活 又 容 易, 而 且 产 品 可 以 很 快 进 入 市 场 许 多 设 计 人 员 已 经 感 受 到 CPLD 容 易 使 用 时 序 可 预 测 和 速 度 高 等 优 点, 然 而, 在 过 去 由 于 受 到 CPLD 密 度 的 限 制, 他 们 只 好 转 向 FPGA 和 ASIC 现 在, 设 计 人 员 可 以 体 会 到 密 度 高 达 数 十 万 门 的 CPLD 所 带 来 的 好 处 CPLD 结 构 在 一 个 逻 辑 路 径 上 采 用 1 至 16 个 乘 积 项, 因 而 大 型 复 杂 设 计 的 运 行 速 度 可 以 预 测 因 此, 原 有 设 计 的 运 行 可 以 预 测, 也 很 可 靠, 而 且 修 改 设 计 也 很 容 易 CPLD 在 本 质 上 很 灵 活 时 序 简 单 路 由 性 能 极 好, 用 户 可 以 改 变 他 们 的 设 计 同 时 保 持 引 脚 输 出 不 变 与 FPGA 相 比,CPLD 的 I/O 更 多, 尺 寸 更 小 如 今, 通 信 系 统 使 用 很 多 标 准, 必 须 根 据 客 户 的 需 要 配 置 设 备 以 支 持 不 同 的 标 准 CPLD 可 让 设 备 做 出 相 应 的 调 整 以 支 持 多 种 协 议, 并 随 著 标 准 和 协 议 的 演 变 而 改 变 功 能 这 为 系 统 设 计 人 员 带 来 很 大 的 方 便, 因 为 在 标 准 尚 未 完 全 成 熟 之 前 他 们 就 可 以 著 手 进 行 硬 件 设 计, 然 后 再 修 改 代 码 以 满 足 最 终 标 准 的 要 求 CPLD 的 速 度 和 延 迟 特 性 比 纯 软 件 方 案 更 好, 它 的 NRE 费 用 低 於 ASIC, 更 灵 活, 产 品 也 可 以 更 快 入 市 CPLD 可 编 程 方 案 的 优 点 如 下 : 逻 辑 和 存 储 器 资 源 丰 富 (Cypress Delta39K200 的 RAM 超 过 480 Kb) 带 冗 余 路 由 资 源 的 灵 活 时 序 模 型 改 变 引 脚 输 出 很 灵 活 可 以 装 在 系 统 上 后 重 新 编 程 I/O 数 目 多 具 有 可 保 证 性 能 的 集 成 存 储 器 控 制 逻 辑 提 供 单 片 CPLD 和 可 编 程 PHY 方 案 由 于 有 这 些 优 点, 设 计 建 模 成 本 低, 可 在 设 计 过 程 的 任 一 阶 段 添 加 设 计 或 改 变 引 脚 输 出, 可 以 很 快 上 市 CPLD 的 结 构 CPLD 是 属 於 粗 粒 结 构 的 可 编 程 逻 辑 器 件 它 具 有 丰 富 的 逻 辑 资 源 ( 即 逻 辑 门 与 寄 存 器 的 比 例 高 ) 和 高 度 灵 活 的 路 由 资 源 CPLD 的 路 由 是 连 接 在 一 起 的, 而 FPGA 的 路 由 是 分 割 开 的 FPGA 可 能 更 灵 活, 但 包 括 很 多 跳 线, 因 此 速 度 较 CPLD 慢 CPLD 以 群 阵 列 (array of clusters) 的 形 式 排 列, 由 水 平 和 垂 直 路 由 通 道 连 接 起 来 这 些 路 由 通 道 把 信 号 送 到 器 件 的 引 脚 上 或 者 传 进 来, 并 且 把 CPLD 内 部 的 逻 辑 群 连 接 起 来 CPLD 之 所 以 称 作 粗 粒, 是 因 为, 与 路 由 数 量 相 比, 逻 辑 群 要 大 得 到 CPLD 的 逻 辑 群 比 FPGA 的 基 本 单 元 大 得 多, 因 此 FPGA 是 细 粒 的 CPLD 的 功 能 块 CPLD 最 基 本 的 单 元 是 宏 单 元 一 个 宏 单 元 包 含 一 个 寄 存 器 ( 使 用 多 达 16 个 乘 积 项 作 为 其 输

入 ) 及 其 它 有 用 特 性 因 为 每 个 宏 单 元 用 了 16 个 乘 积 项, 因 此 设 计 人 员 可 部 署 大 量 的 组 合 逻 辑 而 不 用 增 加 额 外 的 路 径 这 就 是 为 何 CPLD 被 认 为 是 逻 辑 丰 富 型 的 宏 单 元 以 逻 辑 模 块 的 形 式 排 列 (LB), 每 个 逻 辑 模 块 由 16 个 宏 单 元 组 成 宏 单 元 执 行 一 个 AND 操 作, 然 后 一 个 OR 操 作 以 实 现 组 合 逻 辑 每 个 逻 辑 群 有 8 个 逻 辑 模 块, 所 有 逻 辑 群 都 连 接 到 同 一 个 可 编 程 互 联 矩 阵 每 个 群 还 包 含 两 个 单 端 口 逻 辑 群 存 储 器 模 块 和 一 个 多 端 口 通 道 存 储 器 模 块 前 者 每 模 块 有 8,192b 存 储 器, 后 者 包 含 4,096b 专 用 通 信 存 储 器 且 可 配 置 为 单 端 口 多 端 口 或 带 专 用 控 制 逻 辑 的 FIFO CPLD 有 什 麽 好 处? I/O 数 量 多 CPLD 的 好 处 之 一 是 在 给 定 的 器 件 密 度 上 可 提 供 更 多 的 I/O 数, 有 时 甚 至 高 达 70% 时 序 模 型 简 单 CPLD 优 于 其 它 可 编 程 结 构 之 处 在 于 它 具 有 简 单 且 可 预 测 的 时 序 模 型 这 种 简 单 的 时 序 模 型 主 要 应 归 功 于 CPLD 的 粗 粒 度 特 性 CPLD 可 在 给 定 的 时 间 内 提 供 较 宽 的 相 等 状 态, 而 与 路 由 无 关 这 一 能 力 是 设 计 成 功 的 关 键, 不 但 可 加 速 初 始 设 计 工 作, 而 且 可 加 快 设 计 调 试 过 程 粗 粒 CPLD 结 构 的 优 点 CPLD 是 粗 粒 结 构, 这 意 味 著 进 出 器 件 的 路 径 经 过 较 少 的 开 关, 相 应 地 延 迟 也 小 因 此, 与 等 效 的 FPGA 相 比,CPLD 可 工 作 在 更 高 的 频 率, 具 有 更 好 的 性 能 CPLD 的 另 一 个 好 处 是 其 软 件 编 译 快, 因 为 其 易 于 路 由 的 结 构 使 得 布 放 设 计 任 务 更 加 容 易 执 行 细 粒 FPGA 结 构 的 优 点 FPGA 是 细 粒 结 构, 这 意 味 著 每 个 单 元 间 存 在 细 粒 延 迟 如 果 将 少 量 的 逻 辑 紧 密 排 列 在 一 起,FPGA 的 速 度 相 当 快 然 而, 随 著 设 计 密 度 的 增 加, 信 号 不 得 不 通 过 许 多 开 关, 路 由 延 迟 也 快 速 增 加, 从 而 削 弱 了 整 体 性 能 CPLD 的 粗 粒 结 构 却 能 很 好 地 适 应 这 一 设 计 布 局 的 改 变 灵 活 的 输 出 引 脚 CPLD 的 粗 粒 结 构 和 时 序 特 性 可 预 测, 因 此 设 计 人 员 在 设 计 流 程 的 后 期 仍 可 以 改 变 输 出 引 脚, 而 时 序 仍 保 持 不 变 新 的 CPLD 封 装 CPLD 有 多 种 密 度 和 封 装 类 型, 包 括 单 芯 片 自 引 导 方 案 自 引 导 方 案 在 单 个 封 装 内 集 成 了 FLASH 存 储 器 和 CPLD, 无 须 外 部 引 导 单 元, 从 而 可 降 低 设 计 复 杂 性 并 节 省 板 空 间 在 给 定 的 封 装 尺 寸 内, 有 更 高 的 器 件 密 度 共 享 引 脚 输 出 这 就 为 设 计 人 员 提 供 了 放 大 设 计 的 便 利, 而 无 须 更 改 板 上 的 引 脚 输 出 /<br> 经 常 会 看 到 在 状 态 机 设 计 中 别 人 使 用 各 种 不 同 的 编 码 方 式, 那 么 一 般 情 况 下, 这 种 编 码 方 式 的 选 择 依 据 是 什 么? 我 们 知 道, 在 数 字 逻 辑 设 计 中 最 常 用 的 有 三 种 编 码 方 式 : 二 进 制, 格 雷 码 Gray, 独

热 编 码 One-hot One hot 编 码 使 用 一 组 码 元, 每 一 个 码 元 仅 有 1bit 有 效, 例 如 IDLE = 0001, WRITE = 0010, READ = 0100, WAIT = 1000 这 种 编 码 的 译 码 部 分 可 以 最 简, 因 此 可 以 总 结 出 One-hot 编 码 的 特 点 : 组 合 逻 辑 最 少, 触 发 器 最 多, 工 作 时 钟 频 率 可 以 做 到 最 高 FPGA 的 一 个 最 小 结 构 单 元 (CLB/LE) 中 含 有 查 找 表 ( 实 现 组 合 逻 辑 ) 和 DFF( 实 现 时 序 逻 辑 ), 布 局 布 线 最 好 的 结 果 是 同 一 个 结 构 单 元 中 的 查 找 表 和 DFF 都 使 用, 但 是 大 部 分 情 况 是 仅 使 用 其 中 一 种 资 源, 这 样 另 外 的 资 源 就 是 闲 置 而 浪 费 而 CPLD 中 DFF 资 源 本 来 就 很 少, 由 此 可 见 One-hot 编 码 更 适 合 于 FPGA 设 计, 而 不 适 合 CPLD 设 计, 在 CPLD 中 应 该 选 择 二 进 制 编 码 IC 设 计 中, 应 该 综 合 考 虑 因 为 One-hot 编 码 使 用 DFF 会 大 大 增 加 设 计 面 积 (die size), 因 此 在 时 序 可 以 满 足 的 条 件 下 尽 可 能 使 用 二 进 制 编 码 就 面 积 与 速 度 的 折 中 考 虑 来 说 Gray 码 是 最 好 的 选 择, 当 然 Gray 码 还 有 其 他 很 多 好 的 特 性, 暂 时 不 属 于 这 次 讨 论 的 范 畴 一 般 的 综 合 工 具 对 状 态 机 进 行 综 合 时 都 可 以 让 用 户 对 这 三 种 编 码 进 行 选 择 基 本 依 据 就 以 上 所 说 二 进 制 与 格 雷 码 之 间 的 转 换 自 然 二 进 制 码 转 换 成 二 进 制 格 雷 码, 其 法 则 是 保 留 自 然 二 进 制 码 的 最 高 位 作 为 格 雷 码 的 最 高 位, 而 次 高 位 格 雷 码 为 二 进 制 码 的 高 位 与 次 高 位 相 异 或, 而 格 雷 码 其 余 各 位 与 次 高 位 的 求 法 相 类 似 二 进 制 格 雷 码 转 换 成 自 然 二 进 制 码, 其 法 则 是 保 留 格 雷 码 的 最 高 位 作 为 自 然 二 进 制 码 的 最 高 位, 而 次 高 位 自 然 二 进 制 码 为 高 位 自 然 二 进 制 码 与 次 高 位 格 雷 码 相 异 或, 而 自 然 二 进 制 码 的 其 余 各 位 与 次 高 位 自 然 二 进 制 码 的 求 法 相 类 似 通 过 减 少 寄 存 器 间 的 逻 辑 延 时 来 提 高 工 作 频 率, 或 通 过 流 水 线 设 计 来 优 化 数 据 处 理 时 的 数 据 通 路 来 满 足 高 速 环 境 下 FPGA 或 CPLD 中 的 状 态 机 设 计 要 求 本 文 给 出 了 采 用 这 些 技 术 的 高 速 环 境 状 态 机 设 计 的 规 范 及 分 析 方 法 和 优 化 方 法, 并 给 出 了 相 应 的 示 例 为 了 使 FPGA 或 CPLD 中 的 状 态 机 设 计 满 足 高 速 环 境 要 求, 设 计 工 程 师 需 要 认 识 到 以 下 几 点 : 寄 存 器 资 源 和 逻 辑 资 源 已 经 不 是 问 题 的 所 在, 状 态 机 本 身 所 占 用 的 FPGA 或 CPLD 逻 辑 资 源 或 寄 存 器 资 源 非 常 小 ; 状 态 机 对 整 体 数 据 流 的 是 串 行 操 作, 如 果 希 望 数 据 处 理 的 延 时 非 常 小, 就 必 须 提 高 操 作 的 并 行 程 度, 压 缩 状 态 机 中 状 态 转 移 的 路 径 长 度 ; 高 速 环 境 下 应 合 理 分 配 状 态 机 的 状 态 及 转 移 条 件 本 文 将 结 合 实 际 应 用 案 例 来 说 明 状 态 机 设 计 规 范 1. 使 用 一 位 有 效 的 方 式 进 行 状 态 编 码 状 态 机 中 状 态 编 码 主 要 有 三 种 : 连 续 编 码 (sequential encoding) 一 位 有 效 (one-hot encoding) 方 式 编 码 以 及 不 属 于 这 两 种 的 编 码 例 如, 对 于 一 个 5 个 状 态 (State0~State4) 的 状 态 机, 连 续 编 码 方 式 状 态 编 码 为 :State0-000 State1-001 State2-010 State3-011 State4-100 一 位 有 效 方 式 为 下 为 :State0-00001 State1-00010 State2-00100 State3-01000 State4-10000 对 于 自 行 定 义 的 编 码 则 差 别 很 大, 例 如 试 图 将 状 态 机 的 状 态 位 直 接 作 为 输 出 所 需 信 号, 这 可 能 会 增 加 设 计 难 度 使 用 一 位 有 效 编 码 方 式 使 逻 辑 实 现 更 简 洁, 因 为 一 个 状 态 只 需 要 用 一 位 来 指 示, 而 为 此 增 加 的 状 态 寄 存 器 数 目 相 对 于 整 个 设 计 来 说 可 以 忽 略 一 位 有 效 至 少 有 两 个 含 义 : 对 每 个 状 态 位, 该 位 为 1 对 应 唯 一 的 状 态, 判 断 当 前 状 态 是 否 为 该 状 态, 只 需 判 断 该 状 态 位 是 否 为

1; 如 果 状 态 寄 存 器 输 入 端 该 位 为 1, 则 下 一 状 态 将 转 移 为 该 状 态, 判 断 下 一 状 态 是 否 为 该 状 态, 只 需 判 断 表 示 下 一 状 态 的 信 号 中 该 位 是 否 为 1 2. 合 理 分 配 状 态 转 移 条 件 在 状 态 转 移 图 中, 每 个 状 态 都 有 对 应 的 出 线 和 入 线, 从 不 同 状 态 经 不 同 的 转 移 条 件 到 该 状 态 的 入 线 数 目 不 能 太 多 以 采 用 与 或 逻 辑 的 CPLD 设 计 来 分 析, 如 果 这 样 的 入 线 太 多 则 将 会 需 要 较 多 的 乘 积 项 及 或 逻 辑, 这 就 需 要 更 多 级 的 逻 辑 级 联 来 完 成, 从 而 增 加 了 寄 存 器 间 的 延 迟 ; 对 于 FPGA 则 需 要 多 级 查 找 表 来 实 现 相 应 的 逻 辑, 同 样 会 增 加 延 迟 状 态 机 的 应 用 模 型 如 图 1 所 示 状 态 机 设 计 的 分 析 方 法 状 态 机 设 计 的 分 析 方 法 可 以 分 为 两 种 : 一 种 是 流 程 处 理 分 析, 即 分 析 数 据 如 何 分 步 处 理, 将 相 应 处 理 的 步 骤 依 次 定 为 不 同 状 态, 该 方 法 能 够 分 析 非 常 复 杂 的 状 态 机, 类 似 于 编 写 一 个 软 件 程 序 的 分 析, 典 型 设 计 如 读 写 操 作 和 数 据 包 字 节 分 析 ; 另 一 种 方 法 是 关 键 条 件 分 析, 即 根 据 参 考 信 号 的 逻 辑 条 件 来 确 定 相 应 的 状 态, 这 样 的 参 考 信 号 如 空 或 满 指 示 起 始 或 结 束 握 手 应 答 信 号 等 这 两 种 分 析 方 法 并 没 有 严 格 的 界 限, 在 实 际 的 状 态 机 设 计 分 析 时 往 往 是 这 两 种 方 法 结 合 使 用 下 面 分 别 说 明 这 两 种 分 析 方 法 1. 流 程 处 理 分 析 例 如, 在 一 个 读 取 ZBT SRAM 中 数 据 包 的 设 计 中, 要 根 据 读 出 的 数 据 中 EOP(End of Packet) 信 号 是 否 为 1 来 决 定 一 个 包 的 读 操 作 是 否 结 束, 由 于 读 取 数 据 的 延 后, 这 样 就 会 从 ZBT SRAM 中 多 读 取 数 据, 为 此 可 以 设 计 一 个 信 号 VAL_out 来 过 滤 掉 多 读 的 数 据 根 据 数 据 到 达 的 先 后 及 占 用 的 时 钟 周 期 数, 可 以 设 计 如 图 2 所 示 的 状 态 机 ( 本 文 设 定 : 文 字 说 明 及 插 图 中 当 前 状 态 表 示 为 s_state[n:0], 为 状 态 寄 存 器 的 输 出 ; 下 一 状 态 next_state[n:0], 为 状 态 寄 存 器 的 输 入 ; 信 号 之 间 的 逻 辑 关 系 采 用 Verilog 语 言 ( 或 C 语 言 ) 中 的 符 号 表 示 ;#R 表 示 需 要 经 过 一 级 寄 存 器, 输 出 信 号 对 应 寄 存 器 的 输 出 端 ) 该 状 态 机 首 先 判 断 是 否 已 经 到 达 包 尾, 如 果 是, 则 依 次 进 入 6 个 等 待 状 态, 等 待 状 态 下 的 数 据 无 效,6 个 等 待 状 态 结 束 后 将 正 常 处 理 数 据

2. 关 键 条 件 分 析 图 3 为 一 个 路 由 器 线 卡 高 速 数 据 包 分 发 处 理 的 框 图, 较 高 速 率 的 数 据 包 经 过 分 发 模 块 以 包 为 单 位 送 往 两 个 较 低 速 率 数 据 通 路 ( 即 写 入 FIFO1 或 FIFO2) 对 于 分 发 模 块 设 计, 关 键 参 考 信 号 是 EOP 及 快 满 信 号 AF1 AF2, 参 考 EOP 可 以 实 现 每 次 处 理 一 个 包, 参 考 AF1 AF2 信 号 可 以 决 定 相 应 的 包 该 往 哪 个 FIFO 中 写 入 分 发 算 法 为 :FIFO1 未 满 (AF1=0), 数 据 包 将 写 入 FIFO1; 如 果 FIFO1 将 满 且 FIFO2 未 满 (AF1=1, 且 AF2=0), 则 下 一 数 据 包 将 写 入 FIFO2; 如 果 FIFO1 FIFO2 都 将 满 (AF1=1 且 AF2=1), 则 进 入 丢 包 状 态 状 态 机 描 述 如 图 4 所 示 :UseFifo1 状 态 下 数 据 包 将 写 入 FIFO1,UseFifo2 状 态 下 数 据 包 将 写 入 FIFO2, 丢 包 状 态 下 数 据 包 被 丢 弃, 提 供 丢 包 计 数 使 能 DropCountEnable 状 态 机 的 进 一 步 优 化 1. 利 用 一 位 有 效 编 码 方 式 HSPACE=12 ALT=" 图 2: 对 从 ZBT RAM 已 读 出 的 包 数 据 的 过 滤 处 理 的 状 态 机 "> 如 前 所 述, 状 态 机 的 工 作 频 率 跟 状 态 机 中 各 个 状 态 对 应 的 不 同 转 移 条 件 的 入 线 数 目 有 关 如 果 到 一 个 状 态 的 转 移 条 件 相 同 但 入 线 数 非 常 多, 其 逻 辑 实 现 很 可 能 并 不 复 杂 在 一 位 有 效 编 码 方 式 下, 对 于 某 个 状 态, 如 果 其 他 所 有 状 态 经 相 同 的 转 移 条 件 到 该 状 态, 那 么 其 逻 辑 实 现 可 以 很 好 地 化 简 例 4: 一 位 有 效 编 码 方 式 下 状 态 位 s_state[n:0] 中, s_state[1] s_state[2]... s_state[n]=1 与 s_state[0]=1 等 价, 那 么 next_state[0]=(s_state[0]&s) (s_state[1]&t) (s_state[2]&t)... (s_state[n]) 可 以 化 简 为 : next_state[0]=(s_state[0]&s) ((~s_state[0])&t), 右 端 输 入 信 号 数 目 大 大 减 少 2. 利 用 寄 存 器 的 使 能 信 号 多 数 FPGA 或 CPLD 寄 存 器 提 供 使 能 端, 如 果 所 有 的 状 态 机 转 移 必 须 至 少 满 足 某 个 条 件, 那 么 这 个 条 件 可 以 通 过 使 能 信 号 连 接 实 现, 从 而 可 以 降 低 寄 存 器 输 入 端 的 逻 辑 复 杂 度 如 上 例 中 不 同 状 态 间 转 移 必 须 以 EOP 为 1 作 为 前 提, 因 而 可 以 将 该 信 号 作 为 使 能 信 号 来 设 计 3. 结 合 所 选 FPGA 或 CPLD 内 部 逻 辑 单 元 结 构 编 写 代 码 以 Xilinx FPGA 为 例, 一 个 单 元 内 2 个 4 输 入 查 找 表 及 相 关 配 置 逻 辑 可 以 实 现 5 个 信 号 输 入 的 最 复 杂 的 逻 辑, 或 8~9 个 信 号 的 简 单 逻 辑 ( 例 如 全 与 或 者 全 或 ), 延 时 为 一 级 查 找 表 及 配 置 逻 辑 延 时 ; 如 果 将 相 邻 单 元 的 4 个 4 输 入 查 找 表 输 出 连 接 到 一 个 4 输 入 查 找 表, 那 么 可 以 实 现 最 复 杂 的 6 输 入 逻 辑, 此 时 需 要 两 级 查 找 表 延 时 及 相 关 配 置 逻 辑 延 时 更 复 杂 的 逻 辑 需 要 更 多 的 级 连 来 实 现 针 对 高 速 状 态 机 的 情 况, 可 以 尽 量 将 状 态 寄 存 器 输 入 端 的 逻 辑 来 源 控 制 在 7 个 信 号 以 内, 从 而 自 主 控 制 查 找 表 的 级 连 级 数, 提 高 设 计 的 工 作 频 率 4. 通 过 修 改 状 态 机 如 果 一 个 状 态 机 达 不 到 工 作 频 率 要 求, 则 必 须 根 据 延 时 最 大 路 径 修 改 设 计, 通 常 的 办 法 有 : 改 变 状 态 设 置, 添 加 新 状 态 或 删 除 某 些 状 态, 简 化 转 移 条 件 及 单 个 状 态 连 接 的 转 移 数 目 ; 修 改 转 移 条 件 设 置, 包 括 改 变 转 移 条 件 的 组 合, 以 及 将 复 杂 的 逻 辑 改 为 分 级 经 寄 存 器 输 出 由 寄 存 器 信 号 再 形 成 的 逻 辑, 后 者 将 会 改 变 信 号 时 序, 因 而 可 能 需 要 改 变 状 态 设 置

5. 使 用 并 行 逻 辑 很 多 情 况 下 要 参 考 的 关 键 信 号 可 能 非 常 多, 如 果 参 考 这 些 关 键 信 号 直 接 设 计 状 态 机 所 得 到 的 结 果 可 能 很 复 杂, 个 别 状 态 的 出 线 或 入 线 将 会 非 常 多, 因 而 将 降 低 工 作 频 率 可 以 考 虑 通 过 设 计 并 行 逻 辑 来 提 供 状 态 机 的 关 键 信 号 以 及 所 需 的 中 间 结 果, 状 态 机 负 责 维 护 并 行 逻 辑 以 及 产 生 数 据 处 理 的 流 程 并 行 逻 辑 应 分 级 设 计, 级 间 为 寄 存 器, 从 而 减 少 寄 存 器 到 寄 存 器 的 延 时 图 5 为 一 个 使 用 并 行 逻 辑 的 状 态 机, 该 设 计 用 于 使 用 单 一 数 据 总 线 将 FIFO1~4 中 的 数 据 发 送 到 4 个 数 据 通 路 上 去, 该 设 计 中 并 行 逻 辑 产 生 每 次 操 作 时 的 通 路 及 FIFO 选 择 结 果, 状 态 机 负 责 控 制 每 次 操 作 的 流 程 : 在 Idle 状 态 下, 如 果 FIFO1~4 中 有 数 据 包 供 读 取, 则 进 入 Schedule 状 态 ; 获 得 调 度 结 果 后 Schedule 经 过 一 个 Wait 状 态, 然 后 进 入 ReadData 状 态 读 取 数 据, 同 时 开 始 计 数, 计 数 到 达 所 指 定 数 值 或 者 读 到 数 据 包 尾 时 进 入 空 闲 状 态 Idle, 依 次 循 环 下 去 流 水 线 设 计 流 水 线 (Pipelining) 设 计 是 将 一 个 时 钟 周 期 内 执 行 的 逻 辑 操 作 分 成 几 步 较 小 的 操 作, 并 在 较 高 速 时 钟 下 完 成 图 6a 中 逻 辑 被 分 为 图 6b 中 三 小 部 分, 如 果 它 的 Tpd 为 T, 则 该 电 路 最 高 时 钟 频 率 为 1/T, 而 在 图 6b 中 假 设 每 部 分 的 Tpd 为 T/3, 则 其 时 钟 频 率 可 提 高 到 原 来 的 3 倍, 因 而 单 位 时 间 内 的 数 据 流 量 可 以 达 到 原 来 的 三 倍 代 价 是 输 出 信 号 相 对 于 输 入 滞 后 3 个 周 期, 时 序 有 所 改 变 ( 图 6b 中 输 出 信 号 的 总 延 时 与 图 6a 中 一 样, 但 数 据 吞 吐 量 提 高 了 ), 同 时 增 加 了 寄 存 器 资 源, 而 FPGA 具 有 丰 富 的 寄 存 器 资 源 本 文 所 强 调 的 通 过 减 少 寄 存 器 间 的 逻 辑 延 时 来 提 高 状 态 机 的 工 作 频 率, 与 流 水 线 设 计 的 出 发 点 一 样, 不 同 的 是 流 水 线 所 强 调 的 是 数 据 处 理 时 的 数 据 通 路 优 化, 而 本 文 所 强 调 的 是 状 态 机 中 控 制 逻 辑 的 优 化 mealy&moore 状 态 机 典 型 程 序 Verilog // Example of a 5-state Mealy FSM module mealy (data_in, data_out, reset, clock); output data_out; input [1:0] data_in; input reset, clock; reg data_out; reg [2:0] pres_state, next_state; parameter st0=3'd0, st1=3'd1, st2=3'd2, st3=3'd3, st4=3'd4; // FSM register always @ (posedge clock or negedge reset) begin: statereg if(!reset)// asynchronous reset pres_state = st0; else pres_state = next_state; end // statereg // FSM combinational block

always @(pres_state or data_in) begin: fsm case (pres_state) st0: case(data_in) 2'b00: next_state=st0; 2'b01: next_state=st4; 2'b10: next_state=st1; 2'b11: next_state=st2; st1: case(data_in) 2'b00: next_state=st0; 2'b10: next_state=st2; default: next_state=st1; st2: case(data_in) 2'b0x: next_state=st1; 2'b1x: next_state=st3; st3: case(data_in) 2'bx1: next_state=st4; default: next_state=st3; st4: case(data_in) 2'b11: next_state=st4; default: next_state=st0; default: next_state=st0; end // fsm // Mealy output definition using pres_state w/ data_in always @(data_in or pres_state) begin: outputs case(pres_state) st0: case(data_in) 2'b00: data_out=1'b0; default: data_out=1'b1; st1: data_out=1'b0; st2: case(data_in) 2'b0x: data_out=1'b0; default: data_out=1'b1; st3: data_out=1'b1; st4: case(data_in)

2'b1x: data_out=1'b1; default: data_out=1'b0; default: data_out=1'b0; end // outputs endmodule Verilog // Example of a 5-state Moore FSM module moore (data_in, data_out, reset, clock); output data_out; input [1:0] data_in; input reset, clock; reg data_out; reg [2:0] pres_state, next_state; parameter st0=3'd0, st1=3'd1, st2=3'd2, st3=3'd3, st4=3'd4; //FSM register always @(posedge clock or negedge reset) begin: statereg if(!reset) pres_state = st0; else pres_state = next_state; end // statereg // FSM combinational block always @(pres_state or data_in) begin: fsm case (pres_state) st0: case(data_in) 2'b00: next_state=st0; 2'b01: next_state=st4; 2'b10: next_state=st1; 2'b11: next_state=st2; st1: case(data_in) 2'b00: next_state=st0; 2'b10: next_state=st2; default: next_state=st1; st2: case(data_in) 2'b0x: next_state=st1; 2'b1x: next_state=st3; st3: case(data_in)

2'bx1: next_state=st4; default: next_state=st3; st4: case(data_in) 2'b11: next_state=st4; default: next_state=st0; default: next_state=st0; end // fsm // Moore output definition using pres_state only always @(pres_state) begin: outputs case(pres_state) st0: data_out=1'b1; st1: data_out=1'b0; st2: data_out=1'b1; st3: data_out=1'b0; st4: data_out=1'b1; default: data_out=1'b0; end // outputs endmodule // Moore 使 用 状 态 机 做 时 钟 产 生 电 路 - 独 特 却 又 最 为 精 准 (CPU 设 计 中 常 用 方 法 ) 介 绍 一 款 时 钟 发 生 器 -- 独 特 却 又 最 为 精 准 (CPU 设 计 中 常 用 方 法 ) 时 钟 发 生 器 clkgen 利 用 外 来 时 钟 信 号 clk 来 生 成 一 系 列 时 钟 信 号 clk1 fetch alu_clk 送 往 CPU 的 其 他 部 件 其 中 fetch 是 外 来 时 钟 clk 的 八 分 频 信 号 利 用 fetch 的 上 升 沿 来 触 发 CPU 控 制 器 开 始 执 行 一 条 指 令, 同 时 fetch 信 号 还 将 控 制 地 址 多 路 器 输 出 指 令 地 址 和 数 据 地 址 clk1 信 号 用 作 指 令 寄 存 器 累 加 器 状 态 控 制 器 的 时 钟 信 号 alu_clk 则 用 于 触 发 算 术 逻 辑 运 算 单 元 module clk_gen (clk,reset,clk1,clk2,clk4,fetch,alu_clk); input clk,reset; output clk1,clk2,clk4,fetch,alu_clk; wire clk,reset; reg clk2,clk4,fetch,alu_clk; reg[7:0] state; parameter S1 = 8'b00000001, S2 = 8'b00000010, S3 = 8'b00000100, S4 = 8'b00001000, S5 = 8'b00010000, S6 = 8'b00100000, S7 = 8'b01000000,

S8 = 8'b10000000, idle = 8'b00000000; assign clk1 = ~clk; always @(negedge clk) if(reset) begin clk2 <= 0; clk4 <= 1; fetch <= 0; alu_clk <= 0; state <= idle; end else begin case(state) S1: begin clk2 <= ~clk2; alu_clk <= ~alu_clk; state <= S2; end S2: begin clk2 <= ~clk2; clk4 <= ~clk4; alu_clk <= ~alu_clk; state <= S3; end S3: begin clk2 <= ~clk2; state <= S4; end S4: begin clk2 <= ~clk2; clk4 <= ~clk4; fetch <= ~fetch; state <= S5; end S5: begin

clk2 <= ~clk2; state <= S6; end S6: begin clk2 <= ~clk2; clk4 <= ~clk4; state <= S7; end S7: begin clk2 <= ~clk2; state <= S8; end S8: begin clk2 <= ~clk2; clk4 <= ~clk4; fetch <= ~fetch; state <= S1; end idle: state <= S1; default: state <= idle; end endmodule //-------------------------------------------------------------------------------- 由 于 在 时 钟 发 生 器 的 设 计 中 采 用 了 同 步 状 态 机 的 设 计 方 法, 不 但 使 clk_gen 模 块 的 源 程 序 可 以 被 各 种 综 合 器 综 合, 也 使 得 由 其 生 成 的 clk1 clk2 clk4 fetch alu_clk 在 跳 变 时 间 同 步 性 能 上 有 明 显 的 提 高, 为 整 个 系 统 的 性 能 提 高 打 下 了 良 好 的 基 础 诸 位. 这 样 的 时 钟 发 生 器 无 论 在 时 序 上 还 是 功 能 上 都 是 完 美 的, 难 怪 一 直 在 CPU 设 计 中 采 用.