基于FPGA的可編程定時(shí)器/計(jì)數(shù)器8253的設(shè)計(jì)與實(shí)現(xiàn)
發(fā)布時(shí)間:2008/5/28 0:00:00 訪問(wèn)次數(shù):2371
關(guān)鍵詞:fpga;ip;vhdl
引言
在工程上及控制系統(tǒng)中,常常要求有一些實(shí)時(shí)時(shí)鐘,以實(shí)現(xiàn)定時(shí)或延時(shí)控制,如定時(shí)中斷,定時(shí)檢測(cè),定時(shí)掃描等,還要求有計(jì)數(shù)器能對(duì)外部事件計(jì)數(shù)。要實(shí)現(xiàn)定時(shí)或延時(shí)控制,有三種主要方法:軟件定時(shí)、不可編程的硬件定時(shí)、可編程的硬件定時(shí)器。其中可編程定時(shí)器電路的定時(shí)值及其范圍可以很容易地由軟件來(lái)確定和改變,功能較強(qiáng),使用靈活。intel的定時(shí)器/計(jì)數(shù)器為可編程定時(shí)器pit,型號(hào)為8253,改進(jìn)型為8254,就是為完成上述功能而設(shè)計(jì)出來(lái)的一種電路。
隨著asic的發(fā)展,在實(shí)際工程中通用的8253pit芯片表現(xiàn)出如下的不足:1. 計(jì)數(shù)頻率不夠,8253計(jì)數(shù)速率最高2mhz,即使是其改進(jìn)型8254也往往不能滿足一些需要較高計(jì)數(shù)頻率的工程。2. 8253pit沒(méi)有復(fù)位信號(hào),輸出的初始狀態(tài)不受控制。針對(duì)8253的這些局限性,在實(shí)際工程中往往需要重新設(shè)計(jì)8253,并把8253的部分功能作為一個(gè)獨(dú)立的ip模塊嵌入到設(shè)計(jì)中,以實(shí)現(xiàn)完成某種特定功能的asic。
8253的基本功能和內(nèi)部結(jié)構(gòu)
主要功能
* 每片內(nèi)部包含有3個(gè)獨(dú)立的16位計(jì)數(shù)通道;
* 每個(gè)計(jì)數(shù)器都可以按照二進(jìn)制或二—十進(jìn)制計(jì)數(shù);
* 每個(gè)計(jì)數(shù)器的計(jì)數(shù)速率可高達(dá)2mhz;
* 每個(gè)計(jì)數(shù)通道有6種工作方式,可由程序設(shè)置和改變;
* 所有的輸入/輸出電平信號(hào)都與ttl兼容。
內(nèi)部結(jié)構(gòu)
8253的內(nèi)部結(jié)構(gòu)如圖1所示。
1. 數(shù)據(jù)總線緩沖器。這是8253與cpu數(shù)據(jù)總線連接的8位雙向三態(tài)緩沖器,cpu通過(guò)數(shù)據(jù)總線緩沖器將控制命令字和計(jì)數(shù)初值寫(xiě)入8253芯片,或者從8253計(jì)數(shù)器中讀取當(dāng)前計(jì)數(shù)值。
2. 讀/寫(xiě)邏輯。這是8253內(nèi)部操作的控制部分。首先有片選信號(hào)cs的控制部分,當(dāng)cs為高時(shí),數(shù)據(jù)總線緩沖器處在三態(tài),系統(tǒng)的數(shù)據(jù)總線脫開(kāi),故不能進(jìn)行編程,也不能進(jìn)行讀寫(xiě)操作。其次,由這部分選擇讀寫(xiě)操作的端口(3個(gè)計(jì)數(shù)器及控制字寄存器),并控制數(shù)據(jù)傳送的方向。
3. 控制字寄存器。在8253初始化編程時(shí),由cpu寫(xiě)入控制字以決定通道的工作方式。此寄存器只能寫(xiě)入而不能讀出。實(shí)際上,8253的3個(gè)計(jì)數(shù)器通道都有各自的控制字寄存器,存放各自的控制字,初始化編程時(shí),這3個(gè)控制字分三次共用一個(gè)控制端口地址寫(xiě)入各自的通道.它們是利用最高兩位的狀態(tài)不同來(lái)區(qū)分的。
4. 計(jì)數(shù)器通道。包括計(jì)數(shù)器0、計(jì)數(shù)器1、計(jì)數(shù)器2。它們的結(jié)構(gòu)完全相同,彼此可以按照不同的方式獨(dú)立工作。每個(gè)通道包括:一個(gè)8位的控制寄存器;一個(gè)16位的計(jì)數(shù)初值寄存器;一個(gè)計(jì)數(shù)執(zhí)行部件,他是一個(gè)16位的減法計(jì)數(shù)器;一個(gè)16位的輸出鎖存器。
每個(gè)通道都對(duì)輸入脈沖clk按二進(jìn)制或二—十進(jìn)制,從預(yù)置值開(kāi)始減1計(jì)數(shù)。當(dāng)預(yù)置值減到零時(shí),從out輸出端輸出一信號(hào)。計(jì)數(shù)過(guò)程中,計(jì)數(shù)器受到門(mén)控信號(hào)gate的控制。
8253的設(shè)計(jì)
根據(jù)8253的內(nèi)部結(jié)構(gòu),設(shè)計(jì)8253主要分為兩大部分:總線控制部分和定時(shí)/計(jì)數(shù)部分。
總線控制部分設(shè)計(jì)
這一部分主要完成數(shù)據(jù)的讀/寫(xiě),以及控制字的寫(xiě)入。用vhdl設(shè)計(jì)這部分前,應(yīng)該了解8253的端口選擇(見(jiàn)表1)和控制字(見(jiàn)圖2)。
設(shè)計(jì)的關(guān)鍵在于對(duì)8253端口控制字的掌握。寫(xiě)信號(hào)到來(lái)時(shí),首先要判斷是控制字還是計(jì)數(shù)初始值。如果是初始值,其中先寫(xiě)低字節(jié),再寫(xiě)高字節(jié)部分是重點(diǎn),需要一個(gè)信號(hào)來(lái)判斷寫(xiě)入的是新數(shù)據(jù)還是上一數(shù)據(jù)沒(méi)寫(xiě)完的高字節(jié)部分.其他計(jì)數(shù)器的讀/寫(xiě)大同小異。只要對(duì)8253的端口控制字了解清楚以及對(duì)讀/寫(xiě)的時(shí)序有一定的了解,這一部分的邏輯很容易用vhdl語(yǔ)言描述出來(lái).該進(jìn)程可對(duì)外發(fā)出控制信號(hào),表示控制字及數(shù)據(jù)寫(xiě)入完畢,可以進(jìn)行計(jì)數(shù)器的計(jì)數(shù)操作了。該控制信號(hào)可以作為下面介紹的計(jì)數(shù)部分的觸發(fā)信號(hào)。
計(jì)數(shù)器部分設(shè)計(jì)
8253有3個(gè)獨(dú)立的計(jì)數(shù)器,每個(gè)計(jì)數(shù)器有6種工作模式,完成不同的功能。現(xiàn)以方式4為例介紹vhdl設(shè)計(jì),其他的可以在方式4基礎(chǔ)上加以修改。
這種工作方式,當(dāng)寫(xiě)入控制字后輸出為高。當(dāng)寫(xiě)入計(jì)數(shù)值后,再過(guò)一個(gè)時(shí)鐘周期,計(jì)數(shù)執(zhí)行部件獲得計(jì)數(shù)初值,并開(kāi)始減1計(jì)數(shù)。當(dāng)計(jì)數(shù)到0后輸出變低電平,此低電平一直維持一個(gè)時(shí)鐘周期,然后又自動(dòng)變?yōu)楦唠娖,并一直維持高電平,計(jì)數(shù)器停止計(jì)數(shù)。這種方式計(jì)數(shù)是一次性的,只有輸入新的計(jì)數(shù)值之后,才能開(kāi)始新的計(jì)數(shù)。
下面介紹方式4的設(shè)計(jì)過(guò)程:
cpu寫(xiě)入控制字后,輸出outs立即復(fù)位,方式4中復(fù)位后outs為高電平。cpu寫(xiě)入計(jì)數(shù)初值的下一個(gè)clk脈沖,計(jì)數(shù)初值被送到計(jì)數(shù)執(zhí)行部件并開(kāi)始減1計(jì)數(shù),又經(jīng)過(guò)n個(gè)時(shí)鐘周期后才輸出一個(gè)負(fù)脈沖。當(dāng)gate=1時(shí),允許計(jì)數(shù),gate=0時(shí),禁止計(jì)數(shù)。這樣就實(shí)現(xiàn)了方式4基本的軟件觸發(fā)功能。
if clk1'event and clk1='0' then ——時(shí)鐘脈沖下降沿到來(lái)
if gate1='1' then ——門(mén)控位為1,允許計(jì)數(shù)
if ce1>"0000000000000001" then
ce1<=ce1-1;
——
關(guān)鍵詞:fpga;ip;vhdl
引言
在工程上及控制系統(tǒng)中,常常要求有一些實(shí)時(shí)時(shí)鐘,以實(shí)現(xiàn)定時(shí)或延時(shí)控制,如定時(shí)中斷,定時(shí)檢測(cè),定時(shí)掃描等,還要求有計(jì)數(shù)器能對(duì)外部事件計(jì)數(shù)。要實(shí)現(xiàn)定時(shí)或延時(shí)控制,有三種主要方法:軟件定時(shí)、不可編程的硬件定時(shí)、可編程的硬件定時(shí)器。其中可編程定時(shí)器電路的定時(shí)值及其范圍可以很容易地由軟件來(lái)確定和改變,功能較強(qiáng),使用靈活。intel的定時(shí)器/計(jì)數(shù)器為可編程定時(shí)器pit,型號(hào)為8253,改進(jìn)型為8254,就是為完成上述功能而設(shè)計(jì)出來(lái)的一種電路。
隨著asic的發(fā)展,在實(shí)際工程中通用的8253pit芯片表現(xiàn)出如下的不足:1. 計(jì)數(shù)頻率不夠,8253計(jì)數(shù)速率最高2mhz,即使是其改進(jìn)型8254也往往不能滿足一些需要較高計(jì)數(shù)頻率的工程。2. 8253pit沒(méi)有復(fù)位信號(hào),輸出的初始狀態(tài)不受控制。針對(duì)8253的這些局限性,在實(shí)際工程中往往需要重新設(shè)計(jì)8253,并把8253的部分功能作為一個(gè)獨(dú)立的ip模塊嵌入到設(shè)計(jì)中,以實(shí)現(xiàn)完成某種特定功能的asic。
8253的基本功能和內(nèi)部結(jié)構(gòu)
主要功能
* 每片內(nèi)部包含有3個(gè)獨(dú)立的16位計(jì)數(shù)通道;
* 每個(gè)計(jì)數(shù)器都可以按照二進(jìn)制或二—十進(jìn)制計(jì)數(shù);
* 每個(gè)計(jì)數(shù)器的計(jì)數(shù)速率可高達(dá)2mhz;
* 每個(gè)計(jì)數(shù)通道有6種工作方式,可由程序設(shè)置和改變;
* 所有的輸入/輸出電平信號(hào)都與ttl兼容。
內(nèi)部結(jié)構(gòu)
8253的內(nèi)部結(jié)構(gòu)如圖1所示。
1. 數(shù)據(jù)總線緩沖器。這是8253與cpu數(shù)據(jù)總線連接的8位雙向三態(tài)緩沖器,cpu通過(guò)數(shù)據(jù)總線緩沖器將控制命令字和計(jì)數(shù)初值寫(xiě)入8253芯片,或者從8253計(jì)數(shù)器中讀取當(dāng)前計(jì)數(shù)值。
2. 讀/寫(xiě)邏輯。這是8253內(nèi)部操作的控制部分。首先有片選信號(hào)cs的控制部分,當(dāng)cs為高時(shí),數(shù)據(jù)總線緩沖器處在三態(tài),系統(tǒng)的數(shù)據(jù)總線脫開(kāi),故不能進(jìn)行編程,也不能進(jìn)行讀寫(xiě)操作。其次,由這部分選擇讀寫(xiě)操作的端口(3個(gè)計(jì)數(shù)器及控制字寄存器),并控制數(shù)據(jù)傳送的方向。
3. 控制字寄存器。在8253初始化編程時(shí),由cpu寫(xiě)入控制字以決定通道的工作方式。此寄存器只能寫(xiě)入而不能讀出。實(shí)際上,8253的3個(gè)計(jì)數(shù)器通道都有各自的控制字寄存器,存放各自的控制字,初始化編程時(shí),這3個(gè)控制字分三次共用一個(gè)控制端口地址寫(xiě)入各自的通道.它們是利用最高兩位的狀態(tài)不同來(lái)區(qū)分的。
4. 計(jì)數(shù)器通道。包括計(jì)數(shù)器0、計(jì)數(shù)器1、計(jì)數(shù)器2。它們的結(jié)構(gòu)完全相同,彼此可以按照不同的方式獨(dú)立工作。每個(gè)通道包括:一個(gè)8位的控制寄存器;一個(gè)16位的計(jì)數(shù)初值寄存器;一個(gè)計(jì)數(shù)執(zhí)行部件,他是一個(gè)16位的減法計(jì)數(shù)器;一個(gè)16位的輸出鎖存器。
每個(gè)通道都對(duì)輸入脈沖clk按二進(jìn)制或二—十進(jìn)制,從預(yù)置值開(kāi)始減1計(jì)數(shù)。當(dāng)預(yù)置值減到零時(shí),從out輸出端輸出一信號(hào)。計(jì)數(shù)過(guò)程中,計(jì)數(shù)器受到門(mén)控信號(hào)gate的控制。
8253的設(shè)計(jì)
根據(jù)8253的內(nèi)部結(jié)構(gòu),設(shè)計(jì)8253主要分為兩大部分:總線控制部分和定時(shí)/計(jì)數(shù)部分。
總線控制部分設(shè)計(jì)
這一部分主要完成數(shù)據(jù)的讀/寫(xiě),以及控制字的寫(xiě)入。用vhdl設(shè)計(jì)這部分前,應(yīng)該了解8253的端口選擇(見(jiàn)表1)和控制字(見(jiàn)圖2)。
設(shè)計(jì)的關(guān)鍵在于對(duì)8253端口控制字的掌握。寫(xiě)信號(hào)到來(lái)時(shí),首先要判斷是控制字還是計(jì)數(shù)初始值。如果是初始值,其中先寫(xiě)低字節(jié),再寫(xiě)高字節(jié)部分是重點(diǎn),需要一個(gè)信號(hào)來(lái)判斷寫(xiě)入的是新數(shù)據(jù)還是上一數(shù)據(jù)沒(méi)寫(xiě)完的高字節(jié)部分.其他計(jì)數(shù)器的讀/寫(xiě)大同小異。只要對(duì)8253的端口控制字了解清楚以及對(duì)讀/寫(xiě)的時(shí)序有一定的了解,這一部分的邏輯很容易用vhdl語(yǔ)言描述出來(lái).該進(jìn)程可對(duì)外發(fā)出控制信號(hào),表示控制字及數(shù)據(jù)寫(xiě)入完畢,可以進(jìn)行計(jì)數(shù)器的計(jì)數(shù)操作了。該控制信號(hào)可以作為下面介紹的計(jì)數(shù)部分的觸發(fā)信號(hào)。
計(jì)數(shù)器部分設(shè)計(jì)
8253有3個(gè)獨(dú)立的計(jì)數(shù)器,每個(gè)計(jì)數(shù)器有6種工作模式,完成不同的功能。現(xiàn)以方式4為例介紹vhdl設(shè)計(jì),其他的可以在方式4基礎(chǔ)上加以修改。
這種工作方式,當(dāng)寫(xiě)入控制字后輸出為高。當(dāng)寫(xiě)入計(jì)數(shù)值后,再過(guò)一個(gè)時(shí)鐘周期,計(jì)數(shù)執(zhí)行部件獲得計(jì)數(shù)初值,并開(kāi)始減1計(jì)數(shù)。當(dāng)計(jì)數(shù)到0后輸出變低電平,此低電平一直維持一個(gè)時(shí)鐘周期,然后又自動(dòng)變?yōu)楦唠娖剑⒁恢本S持高電平,計(jì)數(shù)器停止計(jì)數(shù)。這種方式計(jì)數(shù)是一次性的,只有輸入新的計(jì)數(shù)值之后,才能開(kāi)始新的計(jì)數(shù)。
下面介紹方式4的設(shè)計(jì)過(guò)程:
cpu寫(xiě)入控制字后,輸出outs立即復(fù)位,方式4中復(fù)位后outs為高電平。cpu寫(xiě)入計(jì)數(shù)初值的下一個(gè)clk脈沖,計(jì)數(shù)初值被送到計(jì)數(shù)執(zhí)行部件并開(kāi)始減1計(jì)數(shù),又經(jīng)過(guò)n個(gè)時(shí)鐘周期后才輸出一個(gè)負(fù)脈沖。當(dāng)gate=1時(shí),允許計(jì)數(shù),gate=0時(shí),禁止計(jì)數(shù)。這樣就實(shí)現(xiàn)了方式4基本的軟件觸發(fā)功能。
if clk1'event and clk1='0' then ——時(shí)鐘脈沖下降沿到來(lái)
if gate1='1' then ——門(mén)控位為1,允許計(jì)數(shù)
if ce1>"0000000000000001" then
ce1<=ce1-1;
——
熱門(mén)點(diǎn)擊
- Verilog HDL的wire和tri線網(wǎng)
- Verilog HDL 結(jié)構(gòu)建模實(shí)例化語(yǔ)句
- Verilog HDL算術(shù)運(yùn)算符
- Verilog HDL實(shí)例數(shù)組
- 基于FPGA的可編程定時(shí)器/計(jì)數(shù)器8253的
- Verilog HDL數(shù)據(jù)類(lèi)型
- PLC和PLD的區(qū)別與聯(lián)系
- Verilog HDL移位操作符
- Verilog HDL條件語(yǔ)句
- Xilinx FPGA全局時(shí)鐘和第二全局時(shí)鐘
推薦技術(shù)資料
- 聲道前級(jí)設(shè)計(jì)特點(diǎn)
- 與通常的Hi-Fi前級(jí)不同,EP9307-CRZ這臺(tái)分... [詳細(xì)]
- AMOLED顯示驅(qū)動(dòng)芯片關(guān)鍵技
- CMOS圖像傳感器技術(shù)參數(shù)設(shè)計(jì)
- GB300 超級(jí)芯片應(yīng)用需求分
- 4NP 工藝NVIDIA Bl
- GB300 芯片、NVL72
- 首個(gè)最新高端芯片人工智能服務(wù)器
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究