(使用VHDL/Verilog-HDL)

Slides:



Advertisements
Similar presentations
LinkIt ONE開發板的簡介.
Advertisements

第7章 串級放大電路實驗.
放大器-頻率響應實驗 科系:通訊工程學系 執導老師:王志湖 學號:B 姓名:何信賢.
第六章 基本輸出入實習.
EPF10K10TI144-4晶片燒錄.
題目:十六對一多工器 姓名:李國豪 學號:B
正反器 一、循序邏輯電路 二、動作情形:用時序(timing),其次輸出( )是由外界輸入與( )所共同決定。
實驗6: RC 和 RLC 電路(課本實驗21) 目的: 利用示波器觀察 RC 和 RLC 電路中電荷對時間之變化 A: RC電路
第 3 章 個人電腦的簡易組裝 DIY.
100學年度第2學期 邏輯設計實習TA訓練 機 台 介 紹.
實習一 二極體的基本應用 二極體V-I 特性曲線 理想二極體模型 (2)順向偏壓時,二極體 短路 (1)逆向偏壓時,二極體 斷路
電腦硬體裝修乙級技術士檢定 第一站 檢修卡製作及介面控制 撰寫PLD布林代數:PALASM 4 撰寫BASIC 程式語言
Q101 在701 SDX Linux上的標準安裝與使用程序v2
Chapter 5 Verilog 硬體描述語言
第1章 認識Arduino.
Chapter 5 Verilog硬體描述語言
Ch01-2 Verilog語法 資料流(DataFlow)設計 行為(Behavior)設計
EDA技术 廖义奎.
使用VHDL設計—4位元加法器 通訊一甲 B 楊穎穆.
第四阶段实验 ISP器件的设计与应用 一、实验目的 二、实验内容与要求 三、ISP器件的开发流程 四、EDA Pro2K实验系统介绍
使用VHDL設計—4位元位移器 通訊一甲 B 楊穎穆.
2-1 接腳說明 2018/11/30 第2章 系統分析.
數位邏輯設計與實習 Ch06 計數器與暫存器設計.
Programmable System-on-Chip™ Cypress MicroSystems (PSoC™) 簡 介
AIM-spice Miao-shan, Li.
信號處理.
23-1 連接資料排線的流程 23-2 安裝電源線的注意事項 23-3 電源線安裝流程 23-4 安裝機殼訊號線的注意事項
App Inventor2呼叫PHP存取MySQL
第 8 章 Combinational Logic Applications
使用VHDL設計-多工器/解多工器 通訊一甲 B 楊穎穆.
CPLD數位邏輯設計 苗栗農工電機科.
建立一 function s (type) 可以用來繪製cyclic-harmonic curves
第二站第6題 大門控制電路.
類比轉數位 IC研究 組員:施怡儒 S 柯曄新 S 張久藝 S
邏輯設計--不穩多諧振盪器 通訊一甲 B 楊穎穆.
使用 Altera Quartus II 進行電路設計與模擬
本院使用建教合作之輔仁大學 圖書館資料庫 設定方式說明
實驗十二: 紅綠燈控制電路設計 規格: Due: Jan. 3, 2008 Tvrl = Thgl + Thgf + Thyl
4-15 WDT HT66F50.
第七單元 正反器 (教科書第四章) 數位系統實驗
TA教育訓練 微處理機系統實習.
示波器(Oscilloscope) 原理、操作與應用.
乙級 數位電子術科-鍵盤掃描裝置 工作原理: 鍵盤掃描裝置係利用計數器及解碼器來完成一組鍵盤掃描的編碼裝置;在本電路中,僅以
XILINX FPGA Download Programming
使用VHDL設計 七段顯示器 通訊工程系 一年甲班 姓名 : 蘇建宇 學號 : B
語法:結構 實作:Analog in (VR、光敏+七段顯示電壓) 簡報:廖崇義
安裝 / 操作 flashget SOP (以Win 7 作業系統為範例)
设计示例一 用门级结构描述D触发器:.
FTP使用教學 簡介: 軟體名稱:FileZilla 軟體性質:Freeware 版本: 繁體中文版
圖 計時 IC 的詳細圖.
數位邏輯設計與實習 Ch08實驗室實習.
DIGITAL FUNCTION GENERATOR
取得與安裝TIDE 從TIBBO網站取得TIDE
自停式向下計數器 通訊一甲 B 楊穎穆.
第6章 電晶體放大電路實驗 6-1 小訊號放大電路 6-2 小訊號等效電路模型 6-3 共射極放大電路實驗 6-4 共集極放大電路實驗
ZigBee PRO教學系統 CC2530 實驗.
利用HT66F50 SIM模組單元中PCK腳位輸出特性 控制speaker 發聲 SIM 串列界面模組
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
可變式計數器 通訊一甲 B 楊穎穆.
晶片讀卡機驅動程式安裝說明.
智慧型手機結合單晶片 控制小家電應用研習 負責教師: 施順鵬 主任 樹德科技大學 電腦與通訊系
FPGA组合逻辑 王安然.
Verilog HDL 基本语法 STEP 2016/12/3.
按键处理部分 王安然.
實習八 邏輯閘的應用 工作項目一 無穩態多諧振盪器的應用 電線接線圖 電子電路實習 P.26.
專題報告 - 線性滑軌應用 指導老師:任才俊 組員:王琮賢,洪聖凱.
LED Pili LED 中州技術學院 電子系 副教授 余文俊.
一、 OP-Amp 放大器原理 反相放大電路 圖一.
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
2-4 中斷.
Presentation transcript:

(使用VHDL/Verilog-HDL) 新數位電子術科秘笈 (使用VHDL/Verilog-HDL) 作者: 賈證主、王炳聰 參考資料: 全華圖書 數位電子乙級術科秘笈

VHDL/Verilog-HDL入門(1/15)

VHDL/Verilog-HDL入門(2/15)

VHDL/Verilog-HDL入門(3/15)

VHDL/Verilog-HDL入門(4/15)

VHDL/Verilog-HDL入門(5/15)

VHDL/Verilog-HDL入門(6/15)

VHDL/Verilog-HDL入門(7/15)

VHDL/Verilog-HDL入門(8/15)

VHDL/Verilog-HDL入門(9/15)

VHDL/Verilog-HDL入門(10/15)

VHDL/Verilog-HDL入門(11/15)

VHDL/Verilog-HDL入門(12/15)

VHDL/Verilog-HDL入門(13/15)

VHDL/Verilog-HDL入門(14/15)

VHDL/Verilog-HDL入門(15/15)

子電路板製作之注意事項 連接至電腦印表機埠 使用右側USB轉JTAG接頭燒錄CPLD時,此顆IC需拔除 供EPM3064ALC44-4工作 之3.3V直流電源 注意: 腳座缺口的方向務必裝置正確,否則將無法燒錄電路程式碼 供第二題鍵盤掃描使用之4MHz石英振盪器 子電路板製作之注意事項

Quartus II燒錄器設定 在考場應試時則需注意考場所設定的燒錄介面為USB埠或印表機埠,若尚未設定,考生必須依照下述方式自行設定。 (1) USB-Blaster安裝:目前許多電腦已經沒有印表機埠,於平常練習時,可自備一組USB Blaster燒錄頭,如下圖將USB Blaster燒錄頭之USB埠插入電腦,電腦應該會偵測到USB Blaster,並要求使用者指定安裝驅動程式的位址,此時使用者必須將驅動程式的安裝路徑設定於 C:/quartus/drivers/usb-blaster,便可完成驅動程式安裝。 註:在單獨燒錄子板上之CPLD晶片時,必須在子板電源輸入端接上3.3V之直流電源。若已經完成子母板之裝配連接,並將它插入測試機台之金手指腳座進行晶片燒錄時,子板就不需要接上直流電源,此時電源由測試機台直接提供。

(2) USB PORT燒錄介面設定: 點選「Tools => Programmer」選項,出現右下圖,若尚未選取燒錄介面,圖中會標示No Hardware。用滑鼠點選Hardware setup後,再用滑鼠點選視窗中之USB-Blaster,並點選右下圖右側之Select Hardware 與Close後,就完成USB燒錄介面設定。

(3) PRINT PORT燒錄介面設定: 直接使用印表機介面來進行燒錄,須如上圖點選「Add Hardware」來產生下圖之Add Hardware表單,在Hardware type及Port的欄位分別選擇ByteBlasterMV及LPT1後,再按下OK就完成印表機埠燒錄介面設定。

(4) 燒錄CPLD晶片 檢定所使用的CPLD晶片是屬於非揮發性的CPLD元件,當開啟Quartus II Programmer後,將編譯成功的專案會自動在Programmer視窗中產生一個『*.pof』檔。進行晶片燒錄前,先在下圖中的Mode欄位選取JTAG,並勾選下方的『Program/configure』,接著按下左側之start鍵,便可進行晶片燒錄。

試 題 一(四 位數多工顯示器) 一、檢定時間:六小時 二、 試題說明

四位數多工顯示器試題動作要求 (一) 電源開關(SW1)ON,則AC 110V 電源指示燈(NL1)及DC 電源指示燈(NL2)應亮。 (二) 凡未具有下列之全部功能要求者不予評分。調整VR1 可變電阻,改變CK1 振盪頻率輸出可使顯示計數速度增快或變慢,亦即: 1. 調整VR1 可變電阻器,讓個位數可清楚看出從0~9 順序計數,且七段顯示器能正常顯示。 2. 調整VR1 可變電阻器,讓十位數可清楚看出從0~9 順序計數,且七段顯示器能正常顯示。 3. 調整VR1 可變電阻器,讓百位數可清楚看出從0~9 順序計數,且七段顯示器能正常顯示。 4. 調整VR1 可變電阻器,讓千位數可清楚看出從0~9 順序計數,且七段顯示器能正常顯示。 (三) 調整VR2 可變電阻器,改變CK2 振盪頻率輸出可使多工掃瞄速度改變。 1. 順時針旋轉掃瞄速度變快,逆時針旋轉掃瞄速度變慢。 2. 當VR2 調整至適當值時,使顯示數字穩定不閃爍。 (四) 按下清除鍵(S1)時,則4 位數字均重置為「0000」,放開(S1)鍵後,計數重新由「0000」開始上數。

四位數多工顯示器測試機台電路簡圖

四位數多工顯示器檢定電子電路圖

四位數多工顯示器之方塊圖

四位數多工顯示器應試要點 母電路板Layout圖繪製 子電路板裝配 母電路板實作與母子電路板連接 CPLD內部電路設計 應檢時間掌控 -- 應於30分鐘內用透明方格紙完成元件面的元件佈置圖與焊接面的裸銅線配線圖 子電路板裝配 -- 應於30分鐘內完成子電路板的製作 母電路板實作與母子電路板連接 -- 應於60分鐘內完成母電路板實作,並與子電路板完成連接 CPLD內部電路設計 -- 依照命題委員所公佈的CPLD內部電路方塊圖來設計電路,不必新增任何電路模組來進行訊號處理 應檢時間掌控 -- 應該在3小時內完成母電路板Layout圖繪製、母子電路板實作以及CPLD內部電路設計,再加上一些故障排除及測試時間,建議考生應於4小時內完成第一題四位數多工顯示器的實作與測試

母電路板Layout圖繪製建議方式(1/5) 方格紙 第1面 第2面 第3面,而背面為第4面 (1)方格紙的特性 先將方格紙從中間對折, 觀察幼圖可知,方格紙共有4 個面相,第1面、第2面、第3 面與第4面,其中第4面為第3 面的背面。 快速元件佈置與佈線的秘訣,在於佈線時,不論元件面或銅箔面的圖形繪製,皆以元件面的方向進行。

母電路板Layout圖繪製建議方式(2/5) 利用母板銅鉑面繪製母板實體圖並標示子板元件面腳位圖

母電路板Layout圖繪製建議方式(3/5) 四位數多工顯示器使用到的金手指接腳共有11支,建議的規劃方式如下: 金手指規劃線必須繪製於方格紙四個面相中的第3面,且一律以元件面方向繪製。 先將分別作為電源與接地的金手指P1及P22拉至兩側長條銅箔。 將P2、P3、P4和P6規劃在子板右側,並與子板間預留數格的接線空間。 將P8、P10、P12、P14與P16 規劃在子板兩排CPLD I/O接腳的中間,並與兩排CPLD I/O保持數格距離。

母電路板Layout圖繪製建議方式(4/5) 金手指與CPLD I/O快速連接,建議的連接方式如下: 金手指與CPLD I/O的連接線應繪製於方格紙第3面,且一律以元件面方向繪製。 直接將金手指往上拉至CPLD之I/O腳位,建議由最下方的CPLD I/O開始依序往上與金手指連接。

母電路板Layout圖繪製建議方式(5/5) 電源、接地處理與電子元件佈置佈線,建議的連接方式如下: 連接母板與子板的接地端:將子板CPLD I/O雙排腳位左下角的GND端直接往左拉至母板接地端之長條銅箔,便可使母板與子板之接地端等電位(此條連線應繪製於方格紙第3面)。 電源與電子元件佈置佈線: C10、C11、R10和U10的元件佈置與佈線結果,如右圖所示,元件外觀圖(包含跳線)必須繪製於方格式的第一面,而元件與元件間的連線應繪製於第3面,所有圖形繪製皆以元件面的方向進行。

母電路板Layout完成圖

(參閱試題第9頁『(四)檢定電子電路圖』) 四位數多工顯示器之子電路板功能與CPLD腳位對應圖 金手指編號/對應之訊號名稱及意義 (參閱試題第9頁『(四)檢定電子電路圖』) 與金手指連接之CPLD I/O腳位編號 P2 / CK1計數時脈訊號源 P3 / CLR不同步清除輸入端 P4 / CK2掃描時脈訊號源 P6 / A計數輸出端(LSB) P8 / B計數輸出端 P10 / C計數輸出端 P12 / D計數輸出端(MSB) P14七段顯示器選擇訊號輸出端(LSB) P16七段顯示器選擇訊號輸出端(MSB)

四位數多工顯示器電路程式碼 module mux_scan4(clr,ck1,ck2,dcba,sel); input clr,ck1,ck2; output [3:0] dcba; output [1:0] sel; reg[3:0] dcba; reg[3:0] dig0,dig1,dig2,dig3; reg[3:0] cnt; assign sel = cnt[3:2]; always @(negedge ck2) begin    cnt<=cnt+1; end always @(negedge ck1 or posedge clr)   if (clr==1'b1)     dig0<=4'b0000;   else     if (dig0>=9)      dig0<=4'b0000;     else      dig0<=dig0+1; always @(negedge dig0[3] or posedge clr) if (clr==1'b1)     dig1<=4'b0000;     if (dig1>=9)      dig1<=4'b0000;      dig1<=dig1+1; always @(negedge dig1[3] or posedge clr) begin   if (clr==1'b1)     dig2<=4'b0000;   else     if (dig2>=9)      dig2<=4'b0000;     else      dig2<=dig2+1; end always @(negedge dig2[3] or posedge clr)     dig3<=4'b0000;     if (dig3>=9)      dig3<=4'b0000;      dig3<=dig3+1; always @(cnt or dig0 or dig1 or dig2 or dig3)      case (cnt[3:2])      2'b00  : dcba = dig3;      2'b01  : dcba = dig2;      2'b10  : dcba = dig1;      default : dcba = dig0;      endcase endmodule

電路程式碼使用Maxplus編譯之修正方式 ….. wire  xx; always @(negedge ck1 or posedge clr) begin   if (clr==1'b1)     dig0<=4'b0000;   else     if (dig0>=9)      dig0<=4'b0000;     else      dig0<=dig0+1; end assign xx = dig0[3]; always @(negedge xx or posedge clr)     dig1<=4'b0000;     if (dig1>=9)      dig1<=4'b0000;      dig1<=dig1+1;

運用檢定電子電路圖有助程式之理解及記憶

運用繪圖法搭配小程式可以進行元件模組化的電路設計

試 題 二(鍵盤掃瞄裝置) 一、 檢定時間:六小時 二、 試題說明

鍵盤掃描裝置試題動作要求 (一) 電源開關(SW1)ON,AC 電源指示燈(NL1)及DC 電源指示燈(NL2)應亮。 1. 開始/停止鍵(S1)為OFF 時,計數顯示器應顯示「00」。 2. 將函數信號產生器設定頻率1~5Hz,輸出電壓準位為0~12v 之正脈波,輸入於「CLOCK IN」端,作為電路動作所需之時序信號。(注意:不得由測試機台信號直接輸入)。 (二) 凡未具有下列之全部功能要求者不予評分。 1. 可由鍵盤輸入0~9 數目 (1) 每次鍵入之數目都能立即顯示於個位數,若再鍵入新數目時,原先之個位數則左移至十位數。 (2) 輸入過程中,可利用清除鍵(S2)隨時清除,顯示器顯示「00」。 2. 由步驟1.將數值設定為99 後,按鍵盤START/STOP 鍵(S1)為ON,則應開始倒數計數。 (1) 個位數可從顯示器上清楚看出由9~0 順序顯示。 (2) 十位數可從顯示器上清楚看出由9~0 順序顯示。 (三) 步驟(二)-2.倒數計數到顯示為「00」時 1. 倒數計數停止。 2. 計數歸零指示燈NL3 亮。 (四) 倒數計數過程中可隨時控制*(START/STOP)鍵(S1),使計數暫停或繼續倒數計。

鍵盤掃瞄裝置測試機台電路簡圖

鍵盤掃瞄裝置檢定電子電路圖

母電路板Layout圖繪製建議方式 步驟(1):快速金手指腳位規劃 **由於P17是母板接地端,可直接將其拉至子板GND端。

母電路板Layout圖繪製建議方式 步驟(2):金手指與CPLD I/O快速連接

母電路板Layout圖繪製建議方式 步驟(3):電源、接地處理與電子元件佈置佈線

母電路板Layout完成圖 步驟(3):母板元件面與焊接面

金手指編號/功能 (參閱試題第24頁『(四)檢定電子電路圖』) 鍵盤掃描裝置之子電路板功能與CPLD腳位對應圖 金手指編號/功能 (參閱試題第24頁『(四)檢定電子電路圖』) 與金手指連接之CPLD I/O腳位編號 P21/鍵值暫存電路載入致能端(來自P6) P10/鍵盤第三行按鍵偵測端(接提昇電路) P4/鍵盤第二行按鍵偵測端(接提昇電路) P2/鍵盤第一行按鍵偵測端(接提昇電路) P13/個位數歸零偵測端 P14/十位數歸零偵測端 P7/鍵值輸出端(MSB) P3/鍵值輸出端 P5/鍵值輸出端 P9/鍵值輸出端(LSB) P15/鍵盤第四列(3,7)掃描訊號 P19/鍵盤第三列(2,6)掃描訊號 P16/鍵盤第二列(1,5,9)掃描訊號 P18/鍵盤第一列(0,4,8)掃描訊號 P6/鍵值暫存電路與十位數計數器資料載入訊號 P20/個位數計數器資料載入訊號 P1/歸零指示燈控制訊號 xtal PIN_43

鍵盤掃描裝置電路程式碼 always @(v or Lb2) begin case(v)   3'b011 : enco = {2'b00,Lb2};  3'b101 : enco = {2'b01,Lb2};  3'b110 : enco = {2'b10,Lb2};   default : enco = {2'b00,Lb2};  endcase End always @(negedge scan)   if (p21==1'b1)    bcdo <= enco; end always @(Lb2) case(Lb2) 2'b00  : h = 4'b0111; 2'b01  : h = 4'b1011; 2'b10  : h = 4'b1101; default : h = 4'b1110; endcase always @(posedge scan)    sq<= keyin;    sqd<=sq;    p20<=pulse; assign pulse = sq & (~sqd); assign p6 = pulse;  assign p1 = ~(p13 |p14); endmodule    鍵盤掃描裝置電路程式碼 module kb_scan(xtal,v,p13,p14,p21,h,bcdo,p6,p20,p1);  input  xtal;  input  [0:2] v;  input  p13,p14,p21;  output [0:3] h;  output [3:0] bcdo;  output p6,p20,p1;  reg   [15:0] cnt;  reg   [1:0] Lb2;  reg   [3:0] enco,bcdo;  reg   [0:3] h;  reg   sq,sqd,p20;  wire  keyin,scan,pulse; assign scan = cnt[15]; always @(posedge xtal) begin    cnt<=cnt+1; end assign keyin = ~ (v[0] & v[1] & v[2]); always @(posedge scan)   if (keyin==1'b0)    Lb2<=Lb2+1;   

鍵盤掃描裝重要時序脈波

運用檢定電子電路圖有助程式之理解及記憶

運用繪圖法搭配小程式可以進行元件模組化的電路設計

試 題 三(數位電子鐘) 一、 檢定時間:六小時 二、 試題說明

數位電子鐘之試題動作要求 (一) 開關設定說明 1. 設定S1 開關為ON 模式。 S2 開關OFF 狀態。 S3 開關OFF 狀態。 2. 需源開關(SW1)ON,則AC 110V 電源指示燈、及DC 電源指示燈亮。 (二) 凡未具有下列之全部功能要求者不予評分。 1. 應檢人應自行調整設定函數信號產生器之輸出為1Hz TTL 準位的方波,加至面板上的「1Hz 輸入端」(注意:不得由測試機台信號直接輸入)。 2. 進入時、分之調整模式。 (1) 當按下S2 開關時(S2 ON)可進行「時」之調整,顯示由00 至23。 (2) 當按下S3 開關時(S3 ON)可進行「分」之調整,顯示由00 至59。 (三) 開關設定功能說明 1. 當S1 開關OFF 時為正常計時模式,二組數字中間的「:」會以秒的速率閃爍。 2. 當S1 開關ON 時為停止計時。 (四) 調整函數信號產生器之頻率,可快速檢驗電子鐘「分」與「時」的進位動作,並可正常計數。

數位電子鐘測試機台簡圖

數位電子鐘檢定電子電路圖

數位電子鐘控制訊號說明正常計時

數位電子鐘控制訊號說明調時狀態

母電路板Layout圖繪製建議方式 步驟(1):快速金手指腳位規劃

母電路板Layout圖繪製建議方式 步驟(1):金手指腳位與CPLD IO連接 (不再使用RC濾波)

母電路板Layout完成圖 步驟(1):金手指腳位與CPLD IO連接 (不再使用RC濾波)

鍵盤掃描裝置之子電路板功能與CPLD腳位對應圖 金手指編號 / 功能 (參閱試題第24頁『(四)檢定電子電路圖』) 與金手指連接之CPLD I/O腳位編號 P19/ 模60分計數器進位輸出訊號 P21 / 調時開關 P5 / 調分開關 P22 / 1Hz訊號輸入端 P1 / 接地端 P7 / 模60秒計數器進位輸出訊號 P2 / 5V電源端 P20 / 計時或調時控制開關 P11 / 小時之十位數二進位值(MSB) P12 / 小時之十位數二進位值(LSB) P14 / 小時之個位數二進位值(MSB) P15 / 小時之個位數二進位值 P16 / 小時之個位數二進位值 P17 / 小時之個位數二進位值(LSB) P8 / 模60分計數器計數時脈輸入端 P4 / 秒鐘閃爍控制訊號 P6 / 模60秒計數器清除訊號 二極體(D10)陰極 / 電源開啟重置端(clr)

鍵盤掃描裝置電路程式碼 (看圖說故事) module elec_ck(clr,p20,p21,p19,p5,p7,p22,p6,p8,p4,hra,hrb); input clr,p20,p21,p19,p5,p7,p22; output p6,p8,p4; output [1:0] hra; output [3:0] hrb; reg [1:0] hra; reg [3:0] hrb; reg y1,y2,y3,y4; wire a1,b1,a2,b2,a3,b3,a4,b4; assign a1 = p19; assign b1 = p21 & p22; assign a2 = p7; assign b2 = p5 & p22; assign a3 = p22; assign b3 = 1'b0; assign a4 = p7; assign b4 = 1'b1; always@(p20 or a1 or b1 or a2 or b2 or a3 or b3 or a4 or b4) begin if (p20==1'b0) begin y1=a1;y2=a2;y3=a3;y4=a4; end else begin y1=b1;y2=b2;y3=b3;y4=b4; end assign p8 = y2; assign p4 = y3; assign p6 = y4; always @(negedge y1 or posedge clr) begin if (clr==1'b1) begin hra<=2'b00; hrb<=4'b0000; end else if ((hra==2) && (hrb==3)) begin hra<=2'b0;hrb<=4'b0; end else if (hrb>=9) begin hra<=hra+1;hrb<=4'b0; hrb<=hrb+1; end endmodule

運用檢定電子電路圖有助程式之理解及記憶

非直接使用TTL輸出端時需修正之程式碼 *程式碼下載網址: http://www.chwa.com.tw/newciv/bookinfo.asp?b_no=06177007 網頁最下方有5kb的補充資料 *修正之程式碼說明: 1、先取得一個 4M/2(16)(約15Hz)取樣訊號,可消除影響正常計數之不穩定雜訊。 程式碼如下: assign fs=cnt[15]; always@(negedge xtal) begin cnt<=cnt+1; end

非直接使用TTL輸出端時需修正之程式碼 *程式碼下載網址: http://www.chwa.com.tw/newciv/bookinfo.asp?b_no=06177007 *修正之程式碼說明: 2、針對兩個Gate clock的訊號進行雜訊 消除及準位調整。 always@(negedge fs) begin b1c<=b1;b2c<=b2; end

非直接使用TTL輸出端之完成程式碼 module elec_ck(clr,p20,p21,p19,p5,p7,p22,p6,p8,p4,hra,hrb,xtal); input clr,p20,p21,p19,p5,p7,p22,xtal; output p6,p8,p4; output [1:0] hra; output [3:0] hrb; reg [1:0] hra; reg [3:0] hrb; reg b1c,b2c,y1,y1c,y2,y3,y4; wire fs,a1,b1,a2,b2,a3,b3,a4,b4; reg [15:0] cnt; assign a1 = p19; assign b1 = p21 & p22; assign a2 = p7; assign b2 = p5 & p22; assign a3 = p22; assign b3 = 1'b0; assign a4 = p7; assign b4 = 1'b1; assign fs=cnt[15]; always@(negedge xtal) begin cnt<=cnt+1; End always@(negedge fs) b1c<=b1;b2c<=b2; end always@(p20 or a1 or b1c or a2 or b2c or a3 or b3 or a4 or b4) begin if (p20==1'b0) begin y1=a1;y2=a2;y3=a3;y4=a4; end else begin y1=b1c;y2=b2c;y3=b3;y4=b4; end End assign p8 = y2; assign p4 = y3; assign p6 = y4; always @(negedge y1 or posedge clr) if (clr==1'b1) begin hra<=2'b00; hrb<=4'b0000; end else if ((hra==2) && (hrb==3)) begin hra<=2'b00;hrb<=4'b0000; end else if (hrb>=9) begin hra<=hra+1;hrb<=4'b0000; hrb<=hrb+1; endmodule