導航:首頁 > 編程語言 > 8253的編程方式

8253的編程方式

發布時間:2024-11-17 15:58:44

⑴ 基於FPGA的可編程定時器/計數器8253的設計與實現

基於FPGA的可編程定時器/計數器8253的設計與實現
摘??? 要:本文介紹了可編程定時器/計數器8253的基本功能,以及一種用VHDL語言設計可編程定時器/計數器8253的方法,詳述了其原理和設計思想,並利用Altera公司的FPGA器件ACEX 1K予以實現。
關鍵詞:FPGA;IP;VHDL

引言
在工程上及控制系統中,常常要求有一些實時時鍾,以實現定時或延時控制,如定時中斷,定時檢測,定時掃描等,還要求有計數器能對外部事件計數。要實現定時或延時控制,有三種主要方法:軟體定時、不可編程的硬體定時、可編程的硬體定時器。其中可編程定時器電路的定時值及其范圍可以很容易地由軟體來確定和改變,功能較強,使用靈活。Intel的定時器/計數器為可編程定時器PIT,型號為8253,改進型為8254,就是為完成上述功能而設計出來的一種電路。
隨著ASIC的發展,在實際工程中通用的8253PIT晶元表現出如下的不足:1. 計數頻率不夠,8253計數速率最高2MHz,即使是其改進型8254也往往不能滿足一些需要較高計數頻率的工程。2. 8253PIT沒有復位信號,輸出的初始狀態不受控制。針對8253的這些局限性,在實際工程中往往需要重新設計8253,並把8253的部分功能作為一個獨立的IP模塊嵌入到設計中,以實現完成某種特定功能的ASIC。

8253的基本功能和內部結構
主要功能
* 每片內部包含有3個獨立的16位計數通道;
* 每個計數器都可以按照二進制或二—十進制計數;
* 每個計數器的計數速率可高達2MHz;
* 每個計數通道有6種工作方式,可由程序設置和改變;
* 所有的輸入/輸出電平信號都與TTL兼容。
內部結構
8253的內部結構如圖1所示。
1. 數據匯流排緩沖器。這是8253與CPU數據匯流排連接的8位雙向三態緩沖器,CPU通過數據匯流排緩沖器將控制命令字和計數初值寫入8253晶元,或者從8253計數器中讀取當前計數值。
2. 讀/寫邏輯。這是8253內部操作的控制部分。首先有片選信號CS的控制部分,當CS為高時,數據匯流排緩沖器處在三態,系統的數據匯流排脫開,故不能進行編程,也不能進行讀寫操作。其次,由這部分選擇讀寫操作的埠(3個計數器及控制字寄存器),並控制數據傳送的方向。
3. 控制字寄存器。在8253初始化編程時,由CPU寫入控制字以決定通道的工作方式。此寄存器只能寫入而不能讀出。實際上,8253的3個計數器通道都有各自的控制字寄存器,存放各自的控制字,初始化編程時,這3個控制字分三次共用一個控制埠地址寫入各自的通道.它們是利用最高兩位的狀態不同來區分的。
4. 計數器通道。包括計數器0、計數器1、計數器2。它們的結構完全相同,彼此可以按照不同的方式獨立工作。每個通道包括:一個8位的控制寄存器;一個16位的計數初值寄存器;一個計數執行部件,他是一個16位的減法計數器;一個16位的輸出鎖存器。
每個通道都對輸入脈沖CLK按二進制或二—十進制,從預置值開始減1計數。當預置值減到零時,從OUT輸出端輸出一信號。計數過程中,計數器受到門控信號GATE的控制。

8253的設計
根據8253的內部結構,設計8253主要分為兩大部分:匯流排控制部分和定時/計數部分。
匯流排控制部分設計
這一部分主要完成數據的讀/寫,以及控制字的寫入。用VHDL設計這部分前,應該了解8253的埠選擇(見表1)和控制字(見圖2)。
設計的關鍵在於對8253埠控制字的掌握。寫信號到來時,首先要判斷是控制字還是計數初始值。如果是初始值,其中先寫低位元組,再寫高位元組部分是重點,需要一個信號來判斷寫入的是新數據還是上一數據沒寫完的高位元組部分.其他計數器的讀/寫大同小異。只要對8253的埠控制字了解清楚以及對讀/寫的時序有一定的了解,這一部分的邏輯很容易用VHDL語言描述出來.該進程可對外發出控制信號,表示控制字及數據寫入完畢,可以進行計數器的計數操作了。該控制信號可以作為下面介紹的計數部分的觸發信號。
計數器部分設計
8253有3個獨立的計數器,每個計數器有6種工作模式,完成不同的功能。現以方式4為例介紹VHDL設計,其他的可以在方式4基礎上加以修改。
這種工作方式,當寫入控制字後輸出為高。當寫入計數值後,再過一個時鍾周期,計數執行部件獲得計數初值,並開始減1計數。當計數到0後輸出變低電平,此低電平一直維持一個時鍾周期,然後又自動變為高電平,並一直維持高電平,計數器停止計數。這種方式計數是一次性的,只有輸入新的計數值之後,才能開始新的計數。
下面介紹方式4的設計過程:
CPU寫入控制字後,輸出outs立即復位,方式4中復位後outs為高電平。CPU寫入計數初值的下一個CLK脈沖,計數初值被送到計數執行部件並開始減1計數,又經過N個時鍾周期後才輸出一個負脈沖。當GATE=1時,允許計數,GATE=0時,禁止計數。這樣就實現了方式4基本的軟體觸發功能。
if clk1'event and clk1='0' then ——時鍾脈沖下降沿到來
if gate1='1' then ——門控位為1,允許計數
if ce1>"0000000000000001" then
ce1<=ce1-1;
——減1計數,ce為計數執行部件
elsif ce1="0000000000000001" then
out1<='0'; ——初值減到1時輸出低電平
???? ce1<=ce1-1; ——繼續減1
elsif ce1="0000000000000000" then
out1<='1'; ——初值減到0時輸出高電平
??? end if;
?? elsif gate1='0' then
——門控位為0,禁止計數
??? null;
?? end if;
? end if;
上面的小程序雖不完整但是卻描述出了方式4的軟體觸發基本功能。若在計數過程中改變計數值,新值寫入後的下一個CLK周期時,此計數值被寫入計數執行部件並從新的計數值開始計數.如果寫入的計數值是兩個位元組,那麼寫入第一個位元組時計數不受影響,寫入第二個位元組後的下一個時鍾周期,計數執行部件獲得新值,並從新值開始重新計數,叫做軟體再觸發.軟體再觸發功能只要在上面的程序中加入相應的判斷信號和控制信號即可實現。
完整的8253寫過程流程
實際上完整的8253就是一個擁有多個進程的復雜結構體。讀匯流排過程、寫匯流排過程、每個計數器的6種工作方式都是一個獨立的進程.進程之間是並行的,只要進程的敏感信號發生變化,該進程就被觸發一次,而進程內部是按照時序順序執行的。以寫過程為例,寫匯流排進程本身是靠敏感信號wr和cs來觸發的,無論寫入控制字還是寫入計數初值後,寫匯流排進程都會對外發出信號以表示某個計數器的控制字寫入完畢或者某個計數器的某個工作方式的計數初值已經寫入,可以進行計數了。而這些信號又相應的作為其他進程的敏感信號,進程之間的通信就是依靠這些信號來完成的。這些進程之間都是並發執行的,具體哪個進程被執行取決於控制字。圖3給出了寫過程的流程,讀過程與之類似。

設計結果驗證
本設計開發軟體採用Altera公司的集成開發軟體MAX+PLUS II 10.2完成。並用該公司的ACEX 1K系列FPGA晶元予以驗證。
之所以選用ACEX 1K系列晶元,是因為它是一種低成本高密度的FPGA晶元系列,是首選的中規模器件產品。它具有如下特點:
* ACEX 1K採用查找表(LUT)和EAB(嵌入式陣列塊)相結合的結構,特別適用於實現復雜邏輯功能存儲器功能,例如通信中應用的數字信號處理、多通道數據處理、數據傳遞和微控制等。
* 典型門數為1萬到10萬門,有多達49152位的RAM(每個EAB有4096位RAM)。
* 器件內核採用2.5V電壓,功耗低,能夠提供高達250MHz的雙向I/O功能,完全支持33MHz和66MHz的PCI局部匯流排標准。
* 具有快速連續式、延時可預測的快速通道互連;具有實現快速加法器、計數器、乘法器和比較器等算術功能的專用進位鏈,以及實現高速多扇入邏輯功能的專用級連接。
通過模擬、綜合,並下載到FPGA中進行驗證,本設計可以很好地實現其功能。■

參考文獻
1 曾繁泰,陳美金. VHDL程序設計
2 林明權. VHDL數字控制系統設計範例

⑵ 8253/8254定時計數器晶元簡介

本文介紹了8253/8254定時計數器晶元的基本概念和應用。定時計數器晶元在實現定時功能時,實際上也在進行計數操作,因為定時就是通過數特定周期的脈沖信號來實現的。然而,單純使用CPU的晶振和時鍾周期來定時,會導致CPU在定時循環時只能等待,無法執行其他任務,降低了CPU的利用率。因此,採用獨立的定時計數器晶元可以在計時時CPU依然可以進行其他工作,計時完成後通過中斷信號通知CPU。

8253晶元是8254晶元的一個升級版本,它支持更高頻率的脈沖輸入,並且具備讀回功能,即不僅在計數完成時輸出結果,還可以在計數過程中讀取當前計數的值。這類晶元在控制工程和電子系統中廣泛應用,可以實現精確的定時和計數功能。

8253晶元內部有四個寄存器,包括三個計數器和一個用於存放控制字的寄存器。通過線寫入不同的值,可以控制計數器的工作方式。初始化設置時,首先需要向控制命令寄存器發送一組數據,來設定晶元的狀態。這組數據包含了通道選擇、讀取高/低位元組、工作方式和計數方式等信息。

控制命令寄存器的每一位都有特定的含義。例如,通道選擇決定了計數器是計數器0、1還是2;讀寫高/低位元組決定是讀取或寫入當前計數值;工作方式可以設置為定時結束中斷、單穩態輸出、頻率發生器、方波發生器等不同的功能;計數方式則決定了使用十進制計數還是BCD碼計數。

8253晶元可以設置不同的工作方式來實現多種功能。例如,方式0可以實現定時結束中斷;方式1可以產生可編程單穩態輸出;方式2可以作為頻率發生器;方式3可以作為方波發生器;方式4和方式5則可以實現軟體或硬體觸發的選通功能。

通過不同的設置,8253晶元可以實現定時、計數、頻率生成、脈沖產生等多種功能,適用於各種需要精確時間控制的場合。在實際應用中,通常需要與74LS138等地址解碼器配合使用,以設置晶元的基地址,並通過IN/OUT指令向寄存器寫入數據來配置晶元的工作模式。

通過以上介紹,我們可以了解到8253/8254定時計數器晶元在控制工程和電子系統中的重要性和靈活性。通過合理配置,這些晶元可以實現各種復雜的定時和計數功能,為電子設備提供精確的時間控制,提高系統的穩定性和可靠性。

閱讀全文

與8253的編程方式相關的資料

熱點內容
悟空頭圖標是什麼APP 瀏覽:551
linuxandroid虛擬機 瀏覽:279
ps李濤pdf 瀏覽:636
linuxfork線程 瀏覽:95
易語言編譯改名 瀏覽:721
阿里伺服器都提供什麼 瀏覽:754
cf打開伺服器接不上怎麼辦 瀏覽:901
linux下more命令 瀏覽:402
des演算法運算位數 瀏覽:375
珠海建行貸款解壓 瀏覽:635
布穀源碼iOS 瀏覽:66
雲存儲節點伺服器是啥 瀏覽:784
壓縮文件可以用pad解壓么 瀏覽:609
我的世界伺服器如何換 瀏覽:64
程序員要拒絕嗎 瀏覽:124
下期視頻怎麼解壓 瀏覽:383
方法命令函數指令 瀏覽:130
視頻已加密請輸入密碼確認 瀏覽:362
香港中產程序員 瀏覽:917
python適合什麼編譯器 瀏覽:844