程式人雜誌



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

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

untitled

Microsoft Word - FPGA的学习流程.doc

untitled

Huawei Technologies Co

untitled

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

前言

ᅞ瑹텢聎몖�

第一章.doc

a b c d e f g C2 C1 2

(\244j\257d\276\307\274\351_ C.indd_70%.pdf)

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

ebook122-11

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

目录

Microsoft Word - 营销目录C.doc

PowerPoint 演示文稿

untitled

1 CPU

中 国 中 西 医 结 合 杂 志 年 月 第 卷 第 期!" 通 透 性 增 加 产 生 蛋 白 水 解 酶 促 进 血 管 内 皮 细 胞 有 丝 分 裂 内 皮 细 胞 从 基 底 膜 上 迁 移 到 血 管 周 围 间 隙 粘 附 聚 集 重 构 为 三 维 管 腔 并 与 周 围 血 管

Ps22Pdf

<4D F736F F D20B9FCA4C6BFA BEC7A67EABD7A4BDA5DFA5AEA8E0B6E9ABB4ACF9B669A5CEB1D0AB4FADFBC170A658BAC2BFEFC2B2B3B92E646F63>

<4D F736F F D D342DA57CA7DEA447B14D2DA475B57BBB50BADEB27AC3FEB14DA447B8D5C344>

从 因 人 设 事 谈 起 一 部 文 学 作 品 ( 尤 其 是 长 篇 小 说 ) 的 结 构 至 关 重 要, 因 为 它 是 文 本 整 体 的 组 织 方 式 和 内 部 构 造, 既 是 形 式 又 是 内 容 ; 乃 是 表 达 主 题 最 有 效 的 艺 术 手 段 元 代 戏 曲

循经指压疗法

Microsoft Word - HERBRECIPES《中國藥膳》.doc

毛主席的猪



附件1.FIT)

附件1:


北魏山东佛教文化个案研究

中 国 证 券 监 督 管 理 委 员 会 : 2016 年 3 月 24 日, 海 南 海 航 基 础 设 施 投 资 集 团 股 份 有 限 公 司 ( 以 下 简 称 海 航 基 础 公 司 本 公 司 或 上 市 公 司 ) 收 到 中 国 证 券 监 督 管 理 委 员 会 ( 以 下 简

年 中 央 国 家 机 关 政 府 采 购 中 心 网 上 竞 价 品 目 表 中 央 国 家 机 关 政 府 采 购 中 心 2016 年 7 月 21 日 - 2 -

幻灯片 1

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

典型自编教材

<4D F736F F D20312EA1B6BDCCCAA6D7CAB8F1CCF5C0FDA1B72E646F63>

Microsoft Word - 长安大学.doc

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

1 TPIS TPIS 2 2

1 6. ( 3 ) 軟 體 測 試 用 以 評 估 系 統 在 短 時 間 內 可 承 受 的 限 度, 此 種 測 試 常 被 稱 為 下 列 何 者? 1 黑 箱 測 試 ( B l a c k B o x T e s t i n g ) 2 迴 歸 測 試 ( R e g r e s s i

筆 已 知 的 資 料? ( 1 ) T C P ( T r a n s m i s s i o n C o n t r o l P r o t o c o l ) 不 提 供 下 列 那 一 項 服 務? 1 最 小 頻 寬 保 證 ( M

Hz 10MHz 0.5V 5V 0.01% 10s 2 0.5V 5V 1Hz 1kHz 10% 90% 1% 3 1Hz 1MHz 1% EPM7128SLC84-15 LM361 LM361 Zlg

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

<4D F736F F D20AE67BD62B6A4C1FAB0EAB2BEA661B056BD6DAAF0B0EAB3F8A7695F30372E31302E31365F2E646F63>

区 结 果 和 试 验 细 节 应 放 在 正 文 中 描 述 表 中 最 左 侧 一 列 包 括 横 标 目 一 个 或 多 个 变 量 常 是 自 变 量 右 面 的 其 余 所 有 各 列 逐 项 行 对 齐 如 果 各 项 横 标 目 的 意 思 非 常 明 确 第 一 栏 可 以 不 写

逢甲大學

TwinCAT 1. TwinCAT TwinCAT PLC PLC IEC TwinCAT TwinCAT Masc

从MCS51向AVR的快速转换.PDF

untitled

VHDL Timer Exercise

untitled

audiogram3 Owners Manual

Microsoft PowerPoint - OPVB1基本VB.ppt

2014年湖北省公务员笔试备考蓝皮书

《计算机应用基础》学习材料(讲义)

Microsoft Word - 应急常识.doc

Microsoft PowerPoint - 職涯探索

FY.DOC

4 中 南 大 学 学 报 医 学 版 摘 要 目 的 探 讨 早 发 性 精 神 分 裂 症 患 者 在 静 息 状 态 下 是 否 存 在 脑 功 能 连 接 异 常 以 及 异 常 区 域 的 定 位 方 法 采 用 第 版 美 国 精 神 障 碍 诊 断 与 统 计 手 册 ( * ) (

2011/9/26 大 陸 港 澳 地 區 線 上 申 請 平 台 現 況 報 告 3 大 陸 港 澳 地 區 線 上 申 請 平 台 現 況 報 告 六 月 七 月 八 月 第 一 類 觀 光 1706 人 人 人 郵 輪 人 0 自 由 行 297

中文手册

本 期 导 读 : * 过 去 两 周 A 股 新 增 一 年 期 定 增 预 案 3 项, 预 计 募 集 资 金 总 额 亿 元 ( 比 上 期 减 少 7.6%); 其 中 2 亿 元 以 下 的 项 目 17 个, 融 资 规 模 为 亿, 比 上 一 期 增 加

<4D F736F F D20B5F8C4B1A55CAFE0B5FBA6F4ACF6BFFDAAED2E646F63>

Microsoft Word nf1.doc

ARM JTAG实时仿真器安装使用指南

013 機 械 相 關 科 系 畢, 對 銑 削 加 工 中 心 機 有 興 機 器 組 裝 人 員 協 銳 精 密 工 業 股 趣, 具 高 度 工 作 熱 忱 者 份 有 機 械 相 關 科 系 畢, 邏 輯 思 考 能 力 佳, 抗 壓 電 控 設 計 組 裝 人 員 性 高, 肯 接 受 挑

晨 光

<4D F736F F D FB971BEF7BB50B971A46CB8735FB773A55FA5ABA5DFB7E7AADAB0AAAFC5A475B77EC2BEB77EBEC7AED55FA97EAE61C0F4B9D2B4BCBC7AB1B1A8EEA874B2CE2E646F63>

信 息 按 术 与 当 代 外 交 的 变 革 基 于 计 算 机 系 统 的 信 息 铁 末 的 发 展 信 息 技 术 的 发 展 经 历 了 5 次 大 的 突 破, 即 语 言 的 产 生 文 字 的 创 造 印 刷 术 的 发 明 电 报 电 话 及 广 播 的 使 用 电 子 计 算 机

所级用户操作手册

(Microsoft Word - ec kc\255^\272q\273R\245x27-52.doc)

ebook37-4

出言成章中公教育专家历年研究发现

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

黑 龙 江 省 哈 尔 滨 市 规 划 局 与 黑 龙 江 汇 丰 实 业 发 展 有 限 公 司 行 政 处 罚 纠 纷 上 诉 案 中 华 人 民 共 和 国 最 高 人 民 法 院 行 政 判 决 书 (1999) 行 终 字 第 20 号 上 诉 人 ( 原 审 被 告 ) 黑 龙 江 省

Microsoft Word - 32

1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C

Microsoft PowerPoint - report ppt [相容模式]

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi


52C

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

全 民 普 法 和 守 法 是 依 法 治 国 的 长 期 基 础 性 工 作 党 的 十 八 大 以 来, 以 习 近 平 同 志 为 总 书 记 的 党 中 央 对 全 面 依 法 治 国 作 出 了 重 要 部 署, 对 法 治 宣 传 教 育 提 出 了 新 的 更 高 要 求, 为 法 治

江门甘蔗化工厂(集团)股份有限公司2013年第三季度报告全文

2016年5月11日泉鲤政文【2016】46号(关于调整区政府行政权力和公共服务事项的通知).doc

PIC16F F MPLAB 08 16F LED 15 LED

untitled

<4D F736F F D20B9D8D3DA C4EAC9EAB1A8D7A8D2B5BCBCCAF5C8FDBCB6B8DACEBBB5C4CDA8D6AA2E646F63>

103 USB C#.NET VB6 100 USB USB (Open Source) LibUsbDotNet USB Library.NET LibUsbDotNet Visual Basic.NET 2010 Express VB.NET 劉政鑫 王嘉鴻 i

untitled

KT-SOPCx开发套件简明教程

untitled

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


Transcription:

程 式 人 雜 誌 2014 年 8 月 號 本 期 焦 點 :FPGA 可 程 式 化 電 路

程 式 人 雜 誌 前 言 編 輯 小 語 授 權 聲 明 本 期 焦 點 FPGA 簡 介 FPGA 的 設 計 流 程 與 開 發 工 具 -- 使 用 Icarus + Altera Quartus II + 北 瀚 FPGA 板 子 程 式 人 文 集 開 放 電 腦 計 畫 (13) -- 將 MCU0 放 上 FPGA 執 行 ( 作 者 : 陳 鍾 誠 ) 從 Arduino 到 AVR 晶 片 (3) -- Timers ( 作 者 :Cooper Maa) 泰 勒 级 数 (Taylor series) ( 作 者 :Bridan) [Visual Basic 6.0] 利 用 WebBrowser 寫 Html 網 頁 預 覽 器 ( 作 者 : 廖 憲 得 0xde) 雜 誌 訊 息 讀 者 訂 閱 投 稿 須 知 參 與 編 輯 公 益 資 訊

前 言 編 輯 小 語 在 本 期 的 程 式 人 雜 誌 中, 聚 焦 的 主 題 是 FPGA 技 術 與 Verilog 硬 體 描 述 語 言 雖 然 程 式 人 撰 寫 的 通 常 是 軟 體 程 式, 但 是 在 Maker 運 動 與 Prototyping 技 術 越 來 越 發 達 的 今 天, 程 式 人 所 能 做 的 事 情 已 經 越 來 越 多 了 我 們 可 以 用 Verilog 或 VHDL 設 計 硬 體 描 述 程 式, 然 後 轉 為 電 路 燒 到 FPGA 板 當 中, 也 可 以 用 電 腦 設 計 3D 模 型, 然 後 用 3D 印 表 機 列 印 出 來, 甚 至 可 以 用 電 腦 設 計 電 路, 然 後 用 像 Eagle 或 Altium Designer 這 樣 的 軟 體 轉 成 PCB 電 路, 之 後 再 用 雕 刻 機 或 洗 電 路 的 方 式 將 電 路 做 出 來 或 許 在 未 來 的 某 一 天, 我 們 可 以 把 3D 模 型 Verilog 電 路 等 等 都 用 電 腦 設 計 出 來, 然 後 用 一 台 超 級 印 表 機, 直 接 印 出 一 台 完 整 的 手 機 了 也 說 不 定! ---- ( 程 式 人 雜 誌 編 輯 - 陳 鍾 誠 ) 授 權 聲 明

本 雜 誌 許 多 資 料 修 改 自 維 基 百 科, 採 用 創 作 共 用 : 姓 名 標 示 相 同 方 式 分 享 授 權, 若 您 想 要 修 改 本 書 產 生 衍 生 著 作 時, 至 少 應 該 遵 守 下 列 授 權 條 件 : 1. 標 示 原 作 者 姓 名 ( 包 含 該 文 章 作 者, 若 有 來 自 維 基 百 科 的 部 份 也 請 一 併 標 示 ) 2. 採 用 創 作 共 用 : 姓 名 標 示 相 同 方 式 分 享 的 方 式 公 開 衍 生 著 作 另 外 當 本 雜 誌 中 有 文 章 或 素 材 並 非 採 用 姓 名 標 示 相 同 方 式 分 享 時, 將 會 在 該 文 章 或 素 材 後 面 標 示 其 授 權, 此 時 該 文 章 將 以 該 標 示 的 方 式 授 權 釋 出, 請 修 改 者 注 意 這 些 授 權 標 示, 以 避 免 產 生 侵 權 糾 紛 例 如 有 些 文 章 可 能 不 希 望 被 作 為 商 業 性 使 用, 此 時 就 可 能 會 採 用 創 作 共 用 : 姓 名 標 示 非 商 業 性 相 同 方 式 分 享 的 授 權, 此 時 您 就 不 應 當 將 該 文 章 用 於 商 業 用 途 上 最 後 懇 請 勿 移 除 公 益 捐 贈 的 相 關 描 述, 以 便 讓 愛 心 得 以 持 續 散 播!

本 期 焦 點 FPGA 簡 介 在 目 前 的 數 位 電 路 技 術 當 中,FPGA 與 CPLD 是 兩 種 可 程 式 化 的 電 路 裝 置, 其 中 CPLD 是 永 久 性 可 程 式 化 電 路, 只 要 燒 錄 進 去 之 後 就 會 永 久 存 在, 即 使 關 機 重 開, 電 路 仍 然 會 存 在 的 一 種 技 術 而 FPGA 則 是 像 RAM 一 樣 在 關 機 後 就 會 消 失 的 可 程 式 化 電 路, 因 此 通 常 會 搭 配 一 塊 EPROM, 在 開 機 的 時 候 將 電 路 燒 錄 到 FPGA 當 中, 讓 電 路 看 起 來 就 像 永 久 存 在 一 樣

圖 Altera StratixIVGX FPGA FPGA 是 由 一 種 稱 為 CLB (Configurable Logic Block) 或 LAB (Logic Array Block) 的 基 礎 區 塊 所 組 成 的 下 圖 是 一 個 CLB 區 塊 的 典 型 結 構, 其 中 包 含 一 個 全 加 器 (FA) 一 個 D-Type 的 正 反 器 三 個 多 工 器 (mux) 與 兩 個 三 輸 入 的 Lookup tables (3-LUTs)

圖 FPGA 的 邏 輯 區 塊 CLB 在 上 圖 的 CLB 區 塊 中, 如 果 走 上 面 的 全 加 器 路 徑, 兩 個 3-LUTs 的 輸 出 會 被 相 加, 加 上 carryin 之 後 就 成 了 一 組 完 整 的 全 加 器 電 路 由 於 該 全 加 器 FA 的 輸 入 是 3-LUTs 的 輸 出, 因 此 carryout 的 輸 出 結 果 可 以 寫 成 如 下 算 式

carry-out = FA(carry-in, 3-LUT(a,b,c), 3-LUT(a,b,c)) 而 且 3-LUT(a,b,c) 的 輸 出 可 以 是 一 個 三 輸 入 的 邏 輯 真 值 表, 因 此 可 以 建 構 出 任 意 的 a,b,c 等 三 輸 入 的 邏 輯 電 路 組 合 舉 例 而 言, 如 果 兩 個 3-LUT 分 別 是 (a and b) or c 與 a xor (b and c) 的 話, 那 輸 出 結 果 就 會 是 carry-out = FA(carry-in, (a and b) or c, a xor (b and c)) 當 然 如 果 走 下 面 的 mux 路 徑, 就 不 會 進 行 加 法 運 算, 而 是 進 行 二 選 一 的 多 工 運 算, 因 此 會 在 兩 個 LUT 的 結 果 當 中 選 擇 一 個 作 為 輸 出 最 後 這 個 輸 出 可 能 會 經 過 D 正 反 器 (DFF) 進 行 儲 存 動 作 後 再 輸 出, 或 者 是 直 接 輸 出 到 out 線 路 中 而 這 些 CLB 區 塊 會 透 過 下 列 的 Switch Box 連 接 形 成 更 大 的 區 塊, 每 個 Switch Box 的 結 構 如 下 圖 所 示

圖 切 換 盒 Switch Box 目 前 的 FPGA 晶 片 容 量, 通 常 包 含 數 十 萬 到 數 百 萬 個 CLB 邏 輯 單 元, 因 此 已 經 可 以 用 FPGA 做 出 非 常 複 雜 的 電 路, 甚 至 可 以 將 上 千 顆 處 理 器 燒 錄 到 這 些 FPGA 晶 片 中, 成 為 一 台 超 級 平

行 電 腦 以 下 是 Xilinx 公 司 的 FPGA IC 規 格 表 圖 Xilinx 的 各 款 FPGA IC 容 量 規 格 表 ( 以 上 表 格 來 自 Xilinx 的 網 站, 網 址 為 : http://www.xilinx.com/products/silicon-devices/fpga/) 目 前 FPGA 的 兩 大 廠 商 是 Xilinx 與 Altera, 這 兩 家 廠 商 供 應 FPGA IC 開 發 板 與 設 計 工 具 軟 體 等 產 品, 而 其 他 的 小 廠 則 通 常 採 購 這 兩 家 的 IC 放 入 自 己 設 計 的 電 路 板 中, 因 為 IC 的 設 計 與 生 產 成 本 通 常 較 高, 所 以 小 廠 通 常 沒 有 足 夠 的 經 費 去 設 計 與 量 產 FPGA IC

在 開 放 原 始 碼 的 領 域, 目 前 我 們 看 到 有 Gadget Factory 這 家 公 司 釋 出 了 開 放 的 FPGA 電 路 板, 該 公 司 已 經 生 產 了 Papilio One, Papilio Pro 與 Papilio DUO 等 三 款 FPGA 電 路 板 Papilio 電 路 板 的 特 色 是 具 有 模 仿 arduino 開 發 板 的 功 能, 並 且 修 改 了 arduino 的 開 發 工 具, 讓 您 可 以 在 Papilio FPGA 板 中 撰 寫 arduino 程 式 以 下 是 Papilio One 電 路 板 的 圖 片

圖 Papilio One FPGA 電 路 板 在 台 灣, 北 瀚 科 技 (SMIMS) 也 有 設 計 生 產 FPGA 電 路 板, 筆 者 目 前 正 與 北 瀚 科 技 洽 談 有 關 設 計 開 放 原 始 碼 的 FPGA 軟 硬 體 當 中, 希 望 可 以 透 過 這 個 合 作 創 建 一 台 從 軟 體 硬 體 到 CPU 全 部 開 放 的 電 腦 當 然 這 將 會 是 一 台 FPGA 電 腦, 這 樣 的 設 計 雖 然 效 能 不 見 得 很 好, 但 是 卻 會 是 一 台 非 常 適 合 學 校 教 學 研 究 用 的 電 腦 筆 者 已 經 為 這 個 目 標 撰 寫 了 一 本 書, 連 結 如 下 : 開 放 電 腦 計 畫 - 計 算 機 硬 體 結 構 ( 使 用 Verilog 實 作 ) 如 果 與 北 瀚 科 技 的 合 作 能 成 功 的 話, 我 們 會 將 軟 體 硬 體 與 書 籍 全 部 都 以 開 放 原 始 碼 的 方 式 公 開 發 行 目 前 北 瀚 科 技 已 經 釋 出 了 兩 塊 開 放 原 始 碼 的 電 路 板 在 github 上, 網 址 如 下 : https://github.com/ccckmit/openfpgaboard 但 是 其 中 有 一 顆 SMIMS 引 擎 與 對 應 的 程 式 還 沒 開 放 原 始 碼, 所 以 筆 者 還 在 尋 求 完 整 開 放 的 可 能 性, 讓 台 灣 的 公 司 也 能 以 更 開 放 的 態 度 面 對 open source 社 群 後 記 : 筆 者 認 為 過 去 幾 十 年 台 灣 有 很 好 的 電 腦 硬 體 製 造 基 礎, 因 此 有 很 多 開 放 硬 體 的 人

才, 他 們 有 能 力 設 計 出 像 arduino 或 樹 莓 派 (raspberry Pi) 這 樣 的 硬 體 與 軟 體, 但 是 由 於 缺 乏 開 放 原 始 碼 的 思 維, 因 此 arduino 與 樹 莓 派 都 不 是 台 灣 的 公 司 或 組 織 所 設 計 出 來 的 筆 者 相 信 在 當 今 的 世 界 中, 開 放 的 心 態 會 是 很 重 要 的, 透 過 開 放 硬 體 的 方 式, 或 許 可 以 為 日 漸 衰 落 的 台 灣 硬 體 產 業, 找 到 一 條 全 新 的 道 路 也 說 不 定 本 文 由 陳 鍾 誠 取 材 並 修 改 自 維 基 百 科, 採 用 創 作 共 用 的 姓 名 標 示 相 同 方 式 分 享 授 權 FPGA 的 設 計 流 程 與 開 發 工 具 -- 使 用 Icarus + Altera Quartus II + 北 瀚 FPGA 板 子 FPGA 是 一 種 可 程 式 化 硬 體, 所 以 我 們 可 以 寫 程 式 燒 到 FPGA 裡 面, 但 是 要 怎 麼 寫, 又 該 怎 麼 燒 呢? 撰 寫 FPGA 程 式 通 常 要 採 用 硬 體 描 述 語 言 (Hardware Description Language, HDL), 目 前 最 常 被 使 用 的 硬 體 描 述 語 言 有 兩 種, 一 種 是 Verilog, 另 一 種 是 VHDL VHDL 在 學 術 界 很 常 用, 很 多 學 校 課 堂 上 教 授 數 位 電 路 設 計 或 數 位 系 統 設 計 的 時 候 都 會 採 用 VHDL; 而 Verilog 則 是 在 業 界 比 較 常 用, 而 且 語 法 相 對 精 簡, 比 較 不 需 要 重 複 宣 告, 因 此 寫 起 來 很 輕 鬆 愉 快, 這 也 是 筆 者 為 何 喜 歡 Verilog 的 原 因 當 我 們 寫 好 一 個 Verilog 或 VHDL 程 式 模 組 的 時 候, 通 常 會 寫 一 段 稱 為 testbench 的 測 試 程 式,

來 測 試 該 模 組 是 否 能 正 常 運 作, 這 個 過 程 完 全 可 以 在 電 腦 上 執 行, 電 腦 會 根 據 Verilog 語 法 模 擬 電 路 的 執 行 過 程, 不 需 要 立 刻 燒 錄 到 FPGA 當 中 舉 例 而 言, 開 放 原 始 碼 的 icarus 是 筆 者 很 喜 歡 使 用 的 Verilog 模 擬 測 試 工 具, 以 下 我 們 就 先 用 icarus 這 個 測 試 工 具 來 說 明 verilog 程 式 的 設 計 與 測 試 流 程 首 先, 讓 我 們 先 撰 寫 一 個 超 級 簡 單 的 模 組, 並 命 名 為 simple.v 後 存 檔 : 檔 案 : simple.v module simple(input clock, input i, output o); assign o = i; endmodule 上 述 模 組 在 硬 體 上 其 實 只 是 一 條 線, 這 條 線 從 i 點 的 輸 入 拉 到 o 點 的 輸 出 ( 雖 然 還 有 一 個 clock 的 參 數, 但 是 在 此 處 並 未 用 到, 宣 告 clock 的 原 因 單 純 是 因 為 我 們 接 下 來 要 使 用 的 SMIMS Instrument 工 具 要 求 模 組 必 須 有 時 脈 clock 才 能 連 接, 所 以 就 多 宣 告 了 這 個 參 數, 預 留 給 後 面 綁 定 時 使 用 的 ) 接 著 我 們 就 可 以 另 外 寫 一 段 測 試 主 程 式 (test bench), 並 且 命 名 為 simpletest.v 後 存 檔 :

檔 案 : simpletest.v `include "simple.v" module main; reg clock, i; wire o; simple s1(clock, i, o); initial begin $monitor("%4dns i=%b o=%b", $stime, i, o); clock = 0; i = 0; #30 i=1; #100 i=0;

end #100 i=1; #100 $finish; always #10 clock=~clock; endmodule 接 著 我 們 就 可 以 用 icarus 的 iverilog 指 令 對 simpletest.v 這 個 檔 案 進 行 編 譯 動 作, 接 著 再 用 vvp 這 個 指 令 執 行 測 試 程 式, 過 程 如 下 所 示 : D:\SMIMS\ccc\simple>iverilog simpletest.v -o simpletest D:\SMIMS\ccc\simple>vvp simpletest 0ns i=0 o=0 30ns i=1 o=1 130ns i=0 o=0

230ns i=1 o=1 當 測 試 完 成, 模 擬 結 果 沒 有 問 題 之 後, 就 可 以 進 一 步 將 程 式 模 組 真 正 燒 錄 到 FPGA 板 上 去 了, 在 此 我 們 採 用 北 瀚 科 技 (SMIMS) 的 VeriLite Altera C4 FPGA 板 作 為 範 例

圖 北 瀚 科 技 (SMIMS) 的 VeriLite Altera C4 FPGA 板 由 於 北 瀚 科 技 是 小 廠, 不 像 Altera 與 Xilinx 等 大 廠 有 自 己 的 IC 與 完 整 的 開 發 工 具, 因 此 北 瀚 的 工 具 必 須 搭 配 上 述 兩 大 廠 的 開 發 工 具 使 用 目 前 Xilinx 與 Altera 是 FPGA 的 兩 大 廠 商, 這 兩 家 廠 商 都 提 供 了 FPGA 的 設 計 開 發 工 具,Altera 的 開 發 工 具 稱 為 Quartus II,Xilinx 的 開 發 工 具 稱 為 ISE, 這 兩 者 都 提 供 了 相 當 完 整 的 工 具 鏈, 包 含 Verilog VHDL 測 試 檔 撰 寫 模 擬 燒 錄 腳 位 設 定 等 工 具 另 外 Xilinx 的 ISE 與 Altera 的 Quartus II 都 提 供 了 用 圖 形 化 設 計 模 組 的 方 式, 設 計 完 之 後 也 可 以 產 生 Verilog 與 VHDL 的 程 式 碼, 這 種 工 具 有 助 於 學 習, 但 是 對 於 專 家 而 言, 直 接 撰 寫 程 式 會 是 更 快 速 有 效 的 方 法 筆 者 並 沒 有 購 買 Altera Quartus II 軟 體, 因 此 使 用 的 是 免 費 的 Quartus II web edition, 但 是 對 於 初 學 者 而 言, 這 個 版 本 已 經 是 相 當 好 用 的 了 以 我 們 上 述 的 VeriLite Altera C4 FPGA 板 為 例, 我 們 必 須 先 用 Altera 的 Quartus II 工 具 來 編 譯 並 產 生 FPGA 燒 錄 檔, 因 此 我 們 必 須 用 Quartus II 建 立 一 個 專 案, 並 在 建 立 時 指 定 使 用 的 FPGA 晶 片 型 號, 相 關 模 組 等 資 訊, 然 後 才 能 進 行 編 譯, 以 下 是 筆 者 用 Quartus II 編 譯 simple.v 完 成 時 的 畫 面

圖 使 用 Altera Quartus II 編 譯 simple.v 模 組 但 是 FPGA 的 程 式 設 計 流 程, 與 一 般 程 式 的 設 計 流 程 有 所 不 同 在 寫 一 般 程 式 的 時 候, 我 們 會 進 行 撰 寫 執 行 或 者 撰 寫 編 譯 執 行 的 流 程, 但 是 在 寫 FPGA 程 式 的 時 候, 還 得 加 上 腳 位 綁 定 與 燒 錄 這 兩 個 步 驟 腳 位 綁 定 是 將 Verilog 模 組 的 輸 出 入 線 路, 與 FPGA 上 的 針 腳 對 映 起 來 的 一 個 動 作, 綁 定 好 之 後 必 須 重 新 進 行 FPGA 等 級 的 完 整 編 譯, 完 成 之 後 才 能 進 行 燒 錄 在 北 瀚 所 提 供 的 工 具 中,HDL Auto Assign Pin 這 個 工 具 來 進 行 腳 位 的 自 動 指 定, 其 操 作 如 下 圖 所 示 :

圖 北 瀚 的 腳 位 自 動 綁 定 工 具 - 步 驟 1

圖 北 瀚 的 腳 位 自 動 綁 定 工 具 - 步 驟 2

圖 北 瀚 的 腳 位 自 動 綁 定 工 具 - 步 驟 3

圖 北 瀚 的 腳 位 自 動 綁 定 工 具 - 步 驟 4

如 果 我 們 在 編 譯 時 沒 有 指 定 腳 位 資 訊,Altera Quartus II 編 譯 出 來 就 不 會 包 含 燒 錄 檔 (*.rbf), 因 此 我 們 可 以 用 上 述 北 瀚 HDL Auto Assign Pin 產 生 的 檔 案 simple.qsf 將 Quartus 編 譯 時 預 設 產 生 的 simple.qsf 檔 覆 蓋 過 去, 然 後 重 新 編 譯 一 次, 這 樣 才 會 正 確 的 指 定 腳 位, 也 才 能 產 生 正 確 的 燒 錄 檔 simple.rbf ( 注 意 : 最 好 將 北 瀚 (SMIMS) 的 檔 案 與 quartus 的 檔 案 分 開 存 放, 否 則 可 能 會 有 互 相 覆 蓋 的 問 題 ) 當 燒 錄 檔 simple.rbf 檔 產 生 之 後, 我 們 就 可 以 透 過 北 瀚 的 VeriComm 這 個 工 具 程 式, 將 simple.rbf 燒 到 北 瀚 的 FPGA 板 中, 然 後 編 輯 輸 入 波 形, 並 且 繪 製 出 實 際 在 FPGA 板 上 跑 出 來 的 波 形 圖, 如 下 所 示 :

圖 VeriComm 程 式 執 行 出 來 的 波 形 圖 我 們 可 以 透 過 VeriComm 輸 出 的 這 個 波 形 看 看 所 設 計 的 Verilog 程 式 是 否 正 確, 這 個 波 形 已 經 不 是 模 擬 的 結 果 了, 而 是 VeriComm 透 過 控 制 simple.v 的 輸 入 與 時 脈, 實 際 在 FPGA 板 上 對 每

個 腳 位 進 行 偵 測 所 繪 製 出 來 的, 也 就 是 讓 simple.v 在 VeriComm 與 SMIMS Engine 晶 片 控 制 下 的 輸 出 結 果 透 過 VeriComm 的 波 形, 我 們 會 比 較 容 易 觀 察 所 設 計 的 電 路 是 否 正 確, 這 也 是 北 瀚 科 技 比 較 特 別 的 技 術 之 所 在 接 著 我 們 還 可 以 利 用 北 瀚 的 VeriInstrument 工 具, 利 用 視 覺 化 的 方 式, 做 出 一 個 互 動 式 的 虛 擬 電 路 舉 例 而 言, 以 下 是 我 將 simple.v 連 結 到 按 鈕 與 LED 等 圖 示 控 制 項, 所 得 到 的 幾 個 畫 面

圖 VeriComm 程 式 執 行 出 來 的 波 形 圖 - 開 關 向 上 扳 ( 通 路 )

圖 VeriComm 程 式 執 行 出 來 的 波 形 圖 - 開 關 向 下 扳 ( 斷 路 ) 至 此 我 們 已 經 用 一 個 極 度 簡 單 的 範 例, 大 致 介 紹 完 整 個 FPGA 電 路 的 設 計 過 程, 希 望 能 讓 大 家 對 FPGA 的 電 路 設 計 有 完 整 的 概 念 當 然 學 習 FPGA 的 過 程 有 些 是 很 難 以 文 字 表 達 的, 因 此 筆 者 錄 了 以 下 這 些 影 片, 希 望 能 幫 助 讀 者 更 生 動 的 理 解 整 個 FPGA 的 電 路 設 計 的 動 態 過 程 YouTube 影 片 :FPGA 電 路 設 計 流 程 : 用 北 瀚 的 板 子 示 範 1 ( 整 體 流 程 介 紹 )

YouTube 影 片 :FPGA 電 路 設 計 流 程 : 用 北 瀚 的 板 子 示 範 2 (icarus) YouTube 影 片 :FPGA 電 路 設 計 流 程 : 用 北 瀚 的 板 子 示 範 3 (quartus) YouTube 影 片 :FPGA 電 路 設 計 流 程 : 用 北 瀚 的 板 子 示 範 4 (pin assign) YouTube 影 片 :FPGA 電 路 設 計 流 程 : 用 北 瀚 的 板 子 示 範 5 (vericomm 波 形 偵 測 驗 證 ) YouTube 影 片 :FPGA 電 路 設 計 流 程 : 用 北 瀚 的 板 子 示 範 6 ( 用 veriinstrument 接 上 虛 擬 周 邊 ) 本 文 由 陳 鍾 誠 取 材 並 修 改 自 維 基 百 科, 採 用 創 作 共 用 的 姓 名 標 示 相 同 方 式 分 享 授 權

程 式 人 文 集 開 放 電 腦 計 畫 (13) -- 將 MCU0 放 上 FPGA 執 行 ( 作 者 : 陳 鍾 誠 ) 前 言 先 前 我 們 曾 經 用 流 程 式 撰 寫 法 設 計 過 MCU0 的 迷 你 版 與 完 整 版, 也 曾 經 用 區 塊 式 的 方 法 設 計 過 MCU0 的 迷 你 版, 這 些 文 章 列 表 如 下 : 開 放 電 腦 計 畫 (6) 一 顆 只 有 51 行 Verilog 程 式 碼 的 16 位 元 處 理 器 MCU0 開 放 電 腦 計 畫 (7) 完 整 指 令 集 的 16 位 元 處 理 器 MCU0s 開 放 電 腦 計 畫 (12) 使 用 區 塊 式 方 法 設 計 MCU0 的 Verilog 程 式 但 是 在 這 些 文 章 中, 我 們 都 只 用 icarus 去 跑 模 擬 測 試, 並 沒 有 真 正 將 MCU0 放 到 FPGA 上 面 跑, 所 以 我 們 將 在 本 文 當 中 用 北 瀚 的 FPGA 板 來 運 行 MCU0 迷 你 版, 讓 MCU0 真 正 成 為 硬 體 修 改 程 式 並 模 擬 測 試

為 了 讓 MCU0 能 上 FPGA 跑, 我 們 必 須 修 改 一 些 程 式, 主 要 是 因 為 Verilog 在 模 擬 的 時 候 可 以 跑 initial 區 段, 但 上 FPGA 時 就 沒 有 辦 法 執 行 initial 區 段, 也 不 能 用 readmemh() 讀 取 機 器 碼 的 十 六 進 位 檔 了 因 此 我 們 只 好 加 上 重 置 訊 號 reset, 並 將 機 器 碼 在 reset 時 直 接 塞 入 記 憶 體 中, 於 是 整 個 程 式 改 寫 如 下 : 檔 案 :muc0m.v `define N `define Z `define OP `define C `define M SW[15] // 負 號 旗 標 SW[14] // 零 旗 標 IR[15:12] // 運 算 碼 IR[11:0] // 常 數 欄 位 {m[`c], m[`c+1]} module mcu0m(input reset, input clock, output reg [15:0] A, outpu t reg [15:0] IR, output reg [15:0] PC); parameter [3:0] LD=4'h0,ADD=4'h1,JMP=4'h2,ST=4'h3,CMP=4'h4,JEQ=

4'h5; reg [15:0] SW; // 狀 態 暫 存 器 reg [15:0] pc0; reg [7:0] m [0:32]; // 內 部 的 記 憶 體 always @(posedge clock or posedge reset) begin if (reset) begin PC = 0; SW = 0; {m[0],m[1]} = 16'h0016; // 00 LOOP: LD I {m[2],m[3]} = 16'h401A; // 02 CMP K10 {m[4],m[5]} = 16'h5012; // 04 JEQ EXIT {m[6],m[7]} = 16'h1018; // 06 ADD K1 {m[8],m[9]} = 16'h3016; // 08 ST I {m[10],m[11]} = 16'h0014; // 0A LD SUM {m[12],m[13]} = 16'h1016; // 0C ADD I

{m[14],m[15]} = 16'h3014; // 0E ST SUM {m[16],m[17]} = 16'h2000; // 10 JMP LOOP {m[18],m[19]} = 16'h2012; // 12 EXIT: JMP EXIT {m[20],m[21]} = 16'h0000; // 14 SUM: WORD 0 {m[22],m[23]} = 16'h0000; // 16 I: WORD 0 {m[24],m[25]} = 16'h0001; // 18 K1: WORD 1 {m[26],m[27]} = 16'h000A; // 1A K10: WORD 10 end else begin IR = {m[pc], m[pc+1]}; // 指 令 擷 取 階 段 :IR=m[PC], 2 個 Byt e 的 記 憶 體 pc0= PC; // 儲 存 舊 的 PC 值 在 pc0 中 PC = PC+2; // 擷 取 完 成,PC 前 進 到 下 一 個 指 令 位 址 case (`OP) // 解 碼 根 據 OP 執 行 動 作 LD: A = `M; // LD C

ST: `M = A; // ST C CMP: begin `N=(A < `M); `Z=(A==`M); end // CMP C ADD: A = A + `M; // ADD C JMP: PC = `C; // JMP C JEQ: if (`Z) PC=`C; // JEQ C endcase // 印 出 PC, IR, SW, A 等 暫 存 器 值 以 供 觀 察 $display("%4dns PC=%x IR=%x, SW=%x, A=%d", $stime, pc0, IR, SW, A); end end endmodule 先 前 我 們 通 常 將 模 組 與 測 試 程 式 寫 在 一 起, 但 是 為 了 放 上 FPGA, 我 們 決 定 把 模 組 與 測 試 程 式 分 開, 然 後 在 測 試 程 式 當 中 用 include 的 方 式 引 用 模 組 檔 案 :mcu0mtest.v

`include "mcu0m.v" module main; // 測 試 程 式 開 始 reg clock, reset; wire [15:0] A, IR, PC, SW; mcu0 mcu(reset, clock, A, IR, PC); // 宣 告 cpu0mc 處 理 器 initial begin clock = 0; // 一 開 始 clock 設 定 為 0 #10; reset = 1; #30; reset = 0; end always #10 clock=~clock; // 每 隔 10ns 反 相, 時 脈 週 期 為 20ns initial #2000 $finish; // 在 2000 奈 秒 的 時 候 停 止 測 試

endmodule 接 著 讓 我 們 用 icarus 測 試 看 看 這 個 程 式 的 運 作 是 否 正 常, 測 試 過 程 如 下 : D:\SMIMS\ccc\mcu0m\icarus>iverilog mcu0mtest.v -o mcu0mtest D:\SMIMS\ccc\mcu0m\icarus>vvp mcu0mtest 50ns PC=0000 IR=0016, SW=0000, A= 0 70ns PC=0002 IR=401a, SW=8000, A= 0 90ns PC=0004 IR=5012, SW=8000, A= 0 110ns PC=0006 IR=1018, SW=8000, A= 1 130ns PC=0008 IR=3016, SW=8000, A= 1 150ns PC=000a IR=0014, SW=8000, A= 0 170ns PC=000c IR=1016, SW=8000, A= 1 190ns PC=000e IR=3014, SW=8000, A= 1 210ns PC=0010 IR=2000, SW=8000, A= 1 230ns PC=0000 IR=0016, SW=8000, A= 1

250ns PC=0002 IR=401a, SW=8000, A= 1 270ns PC=0004 IR=5012, SW=8000, A= 1 290ns PC=0006 IR=1018, SW=8000, A= 2 310ns PC=0008 IR=3016, SW=8000, A= 2 330ns PC=000a IR=0014, SW=8000, A= 1 350ns PC=000c IR=1016, SW=8000, A= 3 370ns PC=000e IR=3014, SW=8000, A= 3 390ns PC=0010 IR=2000, SW=8000, A= 3 410ns PC=0000 IR=0016, SW=8000, A= 2 430ns PC=0002 IR=401a, SW=8000, A= 2 450ns PC=0004 IR=5012, SW=8000, A= 2 470ns PC=0006 IR=1018, SW=8000, A= 3 490ns PC=0008 IR=3016, SW=8000, A= 3 510ns PC=000a IR=0014, SW=8000, A= 3 530ns PC=000c IR=1016, SW=8000, A= 6 550ns PC=000e IR=3014, SW=8000, A= 6

570ns PC=0010 IR=2000, SW=8000, A= 6 590ns PC=0000 IR=0016, SW=8000, A= 3 610ns PC=0002 IR=401a, SW=8000, A= 3 630ns PC=0004 IR=5012, SW=8000, A= 3 650ns PC=0006 IR=1018, SW=8000, A= 4 670ns PC=0008 IR=3016, SW=8000, A= 4 690ns PC=000a IR=0014, SW=8000, A= 6 710ns PC=000c IR=1016, SW=8000, A= 10 730ns PC=000e IR=3014, SW=8000, A= 10 750ns PC=0010 IR=2000, SW=8000, A= 10 770ns PC=0000 IR=0016, SW=8000, A= 4 790ns PC=0002 IR=401a, SW=8000, A= 4 810ns PC=0004 IR=5012, SW=8000, A= 4 830ns PC=0006 IR=1018, SW=8000, A= 5 850ns PC=0008 IR=3016, SW=8000, A= 5 870ns PC=000a IR=0014, SW=8000, A= 10

890ns PC=000c IR=1016, SW=8000, A= 15 910ns PC=000e IR=3014, SW=8000, A= 15 930ns PC=0010 IR=2000, SW=8000, A= 15 950ns PC=0000 IR=0016, SW=8000, A= 5 970ns PC=0002 IR=401a, SW=8000, A= 5 990ns PC=0004 IR=5012, SW=8000, A= 5 1010ns PC=0006 IR=1018, SW=8000, A= 6 1030ns PC=0008 IR=3016, SW=8000, A= 6 1050ns PC=000a IR=0014, SW=8000, A= 15 1070ns PC=000c IR=1016, SW=8000, A= 21 1090ns PC=000e IR=3014, SW=8000, A= 21 1110ns PC=0010 IR=2000, SW=8000, A= 21 1130ns PC=0000 IR=0016, SW=8000, A= 6 1150ns PC=0002 IR=401a, SW=8000, A= 6 1170ns PC=0004 IR=5012, SW=8000, A= 6 1190ns PC=0006 IR=1018, SW=8000, A= 7

1210ns PC=0008 IR=3016, SW=8000, A= 7 1230ns PC=000a IR=0014, SW=8000, A= 21 1250ns PC=000c IR=1016, SW=8000, A= 28 1270ns PC=000e IR=3014, SW=8000, A= 28 1290ns PC=0010 IR=2000, SW=8000, A= 28 1310ns PC=0000 IR=0016, SW=8000, A= 7 1330ns PC=0002 IR=401a, SW=8000, A= 7 1350ns PC=0004 IR=5012, SW=8000, A= 7 1370ns PC=0006 IR=1018, SW=8000, A= 8 1390ns PC=0008 IR=3016, SW=8000, A= 8 1410ns PC=000a IR=0014, SW=8000, A= 28 1430ns PC=000c IR=1016, SW=8000, A= 36 1450ns PC=000e IR=3014, SW=8000, A= 36 1470ns PC=0010 IR=2000, SW=8000, A= 36 1490ns PC=0000 IR=0016, SW=8000, A= 8 1510ns PC=0002 IR=401a, SW=8000, A= 8

1530ns PC=0004 IR=5012, SW=8000, A= 8 1550ns PC=0006 IR=1018, SW=8000, A= 9 1570ns PC=0008 IR=3016, SW=8000, A= 9 1590ns PC=000a IR=0014, SW=8000, A= 36 1610ns PC=000c IR=1016, SW=8000, A= 45 1630ns PC=000e IR=3014, SW=8000, A= 45 1650ns PC=0010 IR=2000, SW=8000, A= 45 1670ns PC=0000 IR=0016, SW=8000, A= 9 1690ns PC=0002 IR=401a, SW=8000, A= 9 1710ns PC=0004 IR=5012, SW=8000, A= 9 1730ns PC=0006 IR=1018, SW=8000, A= 10 1750ns PC=0008 IR=3016, SW=8000, A= 10 1770ns PC=000a IR=0014, SW=8000, A= 45 1790ns PC=000c IR=1016, SW=8000, A= 55 1810ns PC=000e IR=3014, SW=8000, A= 55 1830ns PC=0010 IR=2000, SW=8000, A= 55

1850ns PC=0000 IR=0016, SW=8000, A= 10 1870ns PC=0002 IR=401a, SW=4000, A= 10 1890ns PC=0004 IR=5012, SW=4000, A= 10 1910ns PC=0012 IR=2012, SW=4000, A= 10 1930ns PC=0012 IR=2012, SW=4000, A= 10 1950ns PC=0012 IR=2012, SW=4000, A= 10 1970ns PC=0012 IR=2012, SW=4000, A= 10 1990ns PC=0012 IR=2012, SW=4000, A= 10 您 可 以 看 到 上 述 的 測 試 結 果 中,1+2+...+10 的 結 果 55 正 確 的 被 計 算 出 來 了 放 上 FPGA 實 際 執 行 接 著 就 讓 我 們 將 程 式 放 到 北 瀚 科 技 (SMIMS) 的 VeriLite Altera C4 FPGA 板 上 去 執 行, 以 下 是 該 FPGA 板 的 樣 子

圖 北 瀚 科 技 (SMIMS) 的 VeriLite Altera C4 FPGA 板 由 於 北 瀚 的 開 發 工 具 必 須 搭 配 Altera 的 Quartus II 使 用, 所 以 我 們 必 須 先 將 mcu0m.v 先 用 Quartus II 建 立 專 案 並 且 編 譯 過 之 後, 才 能 用 北 瀚 的 VeriComm 工 具 進 行 燒 錄 與 執 行 監 控 等 任

務, 以 下 是 我 們 用 Quartus II 編 譯 時 的 畫 面

接 著 我 們 用 北 瀚 的 HDL Auto Assign Pin 工 具 產 生 腳 位 綁 定 檔, 以 下 是 腳 位 綁 定 時 的 一 個 畫 面

然 後 我 們 將 產 生 的 mcu0m.qsf 檔 案 複 製 到 Quartus II 專 案 中, 重 新 編 譯 過 即 可 產 生 燒 錄 檔 mcu0m.rbf 檔

接 著 開 啟 VeriComm 並 進 行 燒 錄, 可 以 看 到 該 FPGA 在 VeriComm 監 控 模 式 下 輸 出 的 波 形 圖 如 下

您 可 以 看 到 該 畫 面 中 正 確 的 計 算 出 1+2+...+10 = 55 的 結 果, 這 代 表 我 們 的 mcu0m 模 組 確 實 可 以 放 上 FPGA 並 且 正 確 的 運 作 了 結 語 必 須 注 意 的 是, 北 瀚 的 HDL Auto Assign Pin 由 於 是 他 們 自 己 寫 的 一 個 簡 易 Verilog 剖 析 器, 並 沒 有 支 援 完 整 的 Verilog 語 法, 因 此 在 剖 析 mcu0m.v 時 有 失 敗 的 情 況, 因 此 筆 者 將 mcu0m.v 的 內 容 全 部 刪 除 之 後 才 交 給 HDL Auto Assign Pin 剖 析, 如 此 就 能 正 確 產 生 腳 位 對 應 檔

( 或 許 北 瀚 應 該 考 慮 改 用 icarus 的 剖 析 器, 這 樣 應 該 就 不 用 自 己 辛 苦 的 寫 剖 析 器, 也 可 以 支 援 完 整 的 語 法 了 ) 上 述 編 譯 燒 錄 與 執 行 過 程 還 算 蠻 漫 長 的, 所 以 筆 者 將 自 己 的 操 作 過 程 錄 影 了 下 來, 如 果 本 文 描 述 還 有 不 清 楚 的 地 方, 可 以 進 一 步 參 考 下 列 影 片 YouTube 影 片 : 開 放 電 腦 計 畫 - 將 MCU0m 放 上 北 瀚 的 FPGA 板 執 行 本 文 由 陳 鍾 誠 取 材 並 修 改 自 維 基 百 科, 採 用 創 作 共 用 的 姓 名 標 示 相 同 方 式 分 享 授 權 從 Arduino 到 AVR 晶 片 (3) -- Timers ( 作 者 :Cooper Maa) Timers 簡 介 簡 單 地 說,Timer 是 計 時 器, 可 以 用 來 量 時 間 來 自 石 英 振 盪 器 脈 衝 (pulse) 每 一 個 clock 會 來 一 次,Timer 的 內 容 會 跟 著 計 數 遞 增 所 以, 如 果 使 用 的 是 16 MHz 的 振 盪 器,Timer 的 內 容 會 每 62.5 ns ( 奈 秒 ) 改 變 一 次 根 據 解 析 度 的 不 同,Timer 通 常 有 8-bit 和 16-bit 兩 種 如 果 是 8-bit Timer, 那 麼 可 以 寫 入 的 最

大 數 值 是 255 (16-bit 的 話 是 65535), 假 如 超 過 了 最 大 數 值,Timer 就 會 自 動 reset 為 0, 這 種 情 況 稱 為 溢 位 (overflow) Timer overflow 的 時 候 可 以 引 發 中 斷, 如 果 啟 用 了 Timer overflow 中 斷, 那 麼 你 就 必 須 在 程 式 裏 提 供 ISR 處 理 中 斷 Timer 也 可 以 當 成 一 般 的 計 數 器 (Counter) 使 用, 或 者 是 做 PWM 訊 號 輸 出 以 及 捕 捉 外 部 脈 衝 寬 度 (Input Capture) Prescaler Prescaler ( 預 除 器 ) 是 一 個 用 來 提 供 clock 給 Timer 的 電 路 如 你 所 知,CPU clock 頻 率 通 常 是 1 MHz, 8 MHz, 16 MHz, 而 Precaler 的 用 途 則 是 除 頻 AVR 晶 片 的 Precaler 大 部 份 都 有 提 供 底 下 這 些 選 項 : No Clock Source ( 停 止 Timer) No Prescaling (clock = CPU clock) CPU clock / 8 CPU clock / 64 CPU clock /256 CPU clock /1024

Timer 也 可 以 使 用 外 部 的 clock, 這 樣 的 話,Timer 就 變 成 Counter ( 計 數 器 ) 了 Timer Registers ATmega328 有 3 個 Timer/Counters: 1 個 8-bit Timer/Counters: Timer0 和 Timer2 1 個 16-bit Timer/Counter: Timer1 底 下 以 Timer0 為 例 簡 介 Timer 的 幾 個 主 要 暫 存 器 首 先 是 TCCRxA Timer/Counter Control Register A (x 代 表 0, 1 或 2): TCCRxA 暫 存 器 主 要 是 用 來 設 定 Timer 的 模 式, 例 如 PWM 輸 出 等 進 階 的 功 能 一 般 來 說, 如 果 沒 用 到 PWM, 只 是 要 單 純 的 Timer/Counter 功 能 的 話, 那 麼 把 TCCR0A 暫 存 器 設 定 成 0x00 就 行 了

接 著 是 TCCRxB Timer/Counter Control Register B: TCCR0B 暫 存 器 主 要 是 用 來 設 定 clock source 比 較 重 要 的 是 CS02 CS01 和 CS00 這 三 個 位 元, 這 三 個 元 位 就 是 用 來 選 擇 clock 的 :

註 :Timer2 比 較 特 別, 有 不 一 樣 的 Prescale 設 定, 請 參 考 Datasheet 再 來 是 TCNTx Timer/Counter Register: TCNTx 暫 存 器 比 較 簡 單, 它 就 是 Timer 的 計 數 器 最 後 是 TIMSKx Timer/Counter Interrupt Mask Register: TIMSKx 暫 存 器 主 要 是 用 來 啟 用 或 停 用 Timer0 的 中 斷, 透 過 TOIE0 這 個 位 元 (Timer/Counter0 Overflow Interrupt Enable) 假 如 是 Timer1 的 話, 便 是 TIMSK1 暫 存 器 的 TOIE1 這 個 位

元,Timer2 的 話 是 TIMSK2 的 TOIE2 位 元 本 文 作 者 為 馬 萬 圳, 原 文 網 址 為 : http://coopermaa2nd.blogspot.tw/2011/07/4-timers.html, 由 陳 鍾 誠 編 輯 後 納 入 本 雜 誌 泰 勒 级 数 (Taylor series) ( 作 者 :Bridan) 許 多 代 數 式 都 可 以 表 示 為 這 稱 之 為 泰 勒 級 數 展 開, 如 果 a = 0, 則 改 稱 為 馬 克 勞 林 級 數 展 開 (Maclaurin series) 如 果 缺 少 了 這 些 級 數 展 開, 許 多 電 腦 數 學 函 數 就 會 計 算 不 出 來, 在 對 數 一 文 有 一 計 算 式

其 實 它 就 是 一 種 級 數 展 開, 如 果 電 腦 要 計 算 三 角 函 數 或 自 然 指 數, 就 需 要 下 列 算 式 求 值 如 果 想 計 算 任 意 值 u 求 其 任 意 次 方 y, 可 令

再 求 解 級 數 和 ( 本 文 來 自 研 發 養 成 所 Bridan 的 網 誌, 原 文 網 址 為 http://4rdp.blogspot.tw/2014/07/taylorseries.html, 由 陳 鍾 誠 編 輯 後 納 入 程 式 人 雜 誌 ) [Visual Basic 6.0] 利 用 WebBrowser 寫 Html 網 頁 預 覽 器 ( 作 者 : 廖 憲 得 0xde) 首 先 該 如 何 叫 出 WebBrowser 瀏 覽 器 元 件 呢?

專 案 => 設 定 使 用 元 件 找 到 "Microsoft Internet Controls" 打 勾 => 確 定

簡 單 的 WebBrowser 基 礎 程 式 碼 上 一 頁 WebBrowser1.GoBack 下 一 頁 WebBrowser1.GoForward 瀏 覽 網 址 WebBrowser1.Navigate (" 網 址 ") 重 新 整 理 WebBrowser1.Refresh 搜 索 WebBrowser1.GoSearch 停 止 WebBrowser1.Stop 當 出 現 錯 誤 訊 息 :( 找 不 到 檔 : 'C:32.dll') 將 以 下 Code 用 記 事 本 填 入, 並 另 存 新 檔 為 XXX.reg ( 登 錄 檔 )

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B} ] [HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B} \1.1] @="Microsoft Internet Controls" [HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B} \1.1\0] [HKEY_CLASSES_ROOT\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B} \1.1\0\win32] @="C:\\WINDOWS\\system32\\ieframe.dll"

登 錄 即 可

Html 網 頁 預 覽 器 Private Sub HtmlTxt_Change() Open App.Path & "/Html.htm" For Output As #1 Print #1, HtmlTxt WebBrowserHtml.Navigate App.Path & "/Html.htm" Close End Sub 1. 在 表 單 上 放 置 一 個 WebBrowser 並 且 將 它 重 新 命 名 為 WebBrowserHtml 2. 在 表 單 上 放 置 一 個 TextBox 並 且 將 它 重 新 命 名 為 HtmlTxt 檔 案 下 載 :WebBrowser Html 預 覽 器.rar 本 文 作 者 為 廖 憲 得, 原 文 網 址 為 :

http://www.dotblogs.com.tw/0xde/archive/2013/11/12/127829.aspx, 由 陳 鍾 誠 編 輯 後 納 入 本 雜 誌

雜 誌 訊 息 讀 者 訂 閱 程 式 人 雜 誌 是 一 個 結 合 開 放 原 始 碼 與 公 益 捐 款 活 動 的 雜 誌, 簡 稱 開 放 公 益 雜 誌 開 放 公 益 雜 誌 本 著 讀 書 做 善 事 寫 書 做 公 益 的 精 神, 我 們 非 常 歡 迎 程 式 人 認 養 專 欄 或 者 捐 出 您 的 網 誌, 如 果 您 願 意 成 為 本 雜 誌 的 專 欄 作 家, 請 加 入 程 式 人 雜 誌 社 團 一 同 共 襄 盛 舉 我 們 透 過 發 行 這 本 雜 誌, 希 望 讓 大 家 可 以 讀 到 想 讀 的 書, 學 到 想 學 的 技 術, 同 時 也 讓 寫 作 的 朋 友 的 作 品 能 產 生 良 好 價 值 那 就 是 讓 讀 者 根 據 雜 誌 的 價 值 捐 款 給 慈 善 團 體 讀 雜 誌 做 公 益 也 不 需 要 有 壓 力, 您 不 需 要 每 讀 一 本 就 急 著 去 捐 款, 您 可 以 讀 了 十 本 再 捐, 或 者 使 用 固 定 的 月 捐 款 方 式, 當 成 是 雜 誌 訂 閱 費, 或 者 是 季 捐 款 一 年 捐 一 次 等 都 OK! 甚 至 是 單 純 當 個 讀 者 我 們 也 都 很 歡 迎! 本 雜 誌 每 期 參 考 價 :NT 50 元, 如 果 您 喜 歡 本 雜 誌, 請 將 書 款 捐 贈 公 益 團 體 例 如 可 捐 贈 給 羅 慧 夫 顱 顏 基 金 會 彰 化 銀 行 (009) 帳 號 :5234-01-41778-800 ( 若 匯 款 要 加 註 可 用 程 式 人 雜 誌 五 個 字 ) 投 稿 須 知

給 專 欄 寫 作 者 : 做 公 益 不 需 要 有 壓 力 如 果 您 願 意 撰 寫 專 欄, 您 可 以 輕 鬆 的 寫, 如 果 當 月 的 稿 件 出 不 來, 我 們 會 安 排 其 他 稿 件 上 場 給 網 誌 捐 贈 者 : 如 果 您 沒 時 間 寫 專 欄 或 投 稿, 沒 關 係, 只 要 將 您 的 網 誌 以 [ 創 作 共 用 的 姓 名 標 示 非 商 業 性 相 同 方 式 分 享 授 權 ] 並 通 知 我 們, 我 們 會 自 動 從 中 選 取 需 要 的 文 章 進 行 編 輯, 放 入 適 當 的 雜 誌 當 中 出 刊 給 文 章 投 稿 者 : 程 式 人 雜 誌 非 常 歡 迎 您 加 入 作 者 的 行 列, 如 果 您 想 撰 寫 任 何 文 章 或 投 稿, 請 用 markdown 或 LibreOffice 編 輯 好 您 的 稿 件, 並 於 每 個 月 25 日 前 投 稿 到 程 式 人 雜 誌 社 團 的 檔 案 區, 我 們 會 盡 可 能 將 稿 件 編 入 隔 月 1 號 出 版 程 式 人 雜 誌 當 中, 也 歡 迎 您 到 社 團 中 與 我 們 一 同 討 論 如 果 您 要 投 稿 給 程 式 人 雜 誌, 我 們 最 希 望 的 格 式 是 採 用 markdown 的 格 式 撰 寫, 然 後 將 所 有 檔 按 壓 縮 為 zip 上 傳 到 社 團 檔 案 區 給 我 們, 如 您 想 學 習 markdown 的 撰 寫 出 版 方 式, 可 以 參 考 看 影 片 學 markdown 編 輯 出 版 流 程 一 文 如 果 您 無 法 採 用 markdown 的 方 式 撰 寫, 也 可 以 直 接 給 我 們 您 的 稿 件, 像 是 MS. Word 的 doc 檔 或 LibreOffice 的 odt 檔 都 可 以, 我 們 會 將 這 些 稿 件 改 寫 為 markdown 之 後 編 入 雜 誌 當 中 參 與 編 輯

您 也 可 以 擔 任 程 式 人 雜 誌 的 編 輯, 甚 至 創 造 一 個 全 新 的 公 益 雜 誌, 我 們 誠 摯 的 邀 請 您 加 入 開 放 公 益 出 版 的 行 列, 如 果 您 想 擔 任 編 輯 或 創 造 新 雜 誌, 也 歡 迎 到 程 式 人 雜 誌 社 團 來 與 我 們 討 論 相 關 事 宜 公 益 資 訊 公 益 團 體 聯 絡 資 訊 服 務 對 象 捐 款 帳 號 財 團 法 人 羅 慧 夫 顱 顏 基 金 會 http://www.nncf.org/ lynn@nncf.org 02-27190408 分 機 232 顱 顏 患 者 ( 如 唇 顎 裂 小 耳 症 或 其 他 罕 見 顱 顏 缺 陷 ) 銀 行 :009 彰 化 銀 行 民 生 分 行 帳 號 :5234-01-41778-800 銀 行 : 新 光 銀 行 社 團 法 人 台 灣 省 http://www.cyga.org/ 單 親 隔 代 教 養. 弱 勢 戶 名 : 台 灣 省 兒 童 少 年 兒 童 少 年 成 長 協 cyga99@gmail.com 及 一 般 家 庭 之 兒 童 青 成 長 協 會 會 04-23058005 少 年 帳 號 :103-0912-10-000212-0