新聞中心

        EEPW首頁 > 汽車電子 > 設計應用 > 基于FPGA的可編程定時器/計數器8253的設計與實現

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

        作者:■ 中國科學院 研究生院 閆永志中國科學院 沈陽計算技術研究所 劉偉 何方 時間:2005-04-27 來源:eaw 收藏

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

        引言
        在工程上及控制系統中,常常要求有一些實時時鐘,以實現定時或延時控制,如定時中斷,定時檢測,定時掃描等,還要求有計數器能對外部事件計數。要實現定時或延時控制,有三種主要方法:軟件定時、不可編程的硬件定時、可編程的硬件定時器。其中可編程定時器電路的定時值及其范圍可以很容易地由軟件來確定和改變,功能較強,使用靈活。Intel的定時器/計數器為可編程定時器PIT,型號為8253,改進型為8254,就是為完成上述功能而設計出來的一種電路。
        隨著ASIC的發展,在實際工程中通用的8253PIT芯片表現出如下的不足:1. 計數頻率不夠,8253計數速率最高2MHz,即使是其改進型8254也往往不能滿足一些需要較高計數頻率的工程。2. 8253PIT沒有復位信號,輸出的初始狀態不受控制。針對8253的這些局限性,在實際工程中往往需要重新設計8253,并把8253的部分功能作為一個獨立的模塊嵌入到設計中,以實現完成某種特定功能的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主要分為兩大部分:總線控制部分和定時/計數部分。
        總線控制部分設計
        這一部分主要完成數據的讀/寫,以及控制字的寫入。用設計這部分前,應該了解8253的端口選擇(見表1)和控制字(見圖2)。
        設計的關鍵在于對8253端口控制字的掌握。寫信號到來時,首先要判斷是控制字還是計數初始值。如果是初始值,其中先寫低字節,再寫高字節部分是重點,需要一個信號來判斷寫入的是新數據還是上一數據沒寫完的高字節部分.其他計數器的讀/寫大同小異。只要對8253的端口控制字了解清楚以及對讀/寫的時序有一定的了解,這一部分的邏輯很容易用VHDL語言描述出來.該進程可對外發出控制信號,表示控制字及數據寫入完畢,可以進行計數器的計數操作了。該控制信號可以作為下面介紹的計數部分的觸發信號。
        計數器部分設計
        8253有3個獨立的計數器,每個計數器有6種工作模式,完成不同的功能?,F以方式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系列芯片予以驗證。
        之所以選用ACEX 1K系列芯片,是因為它是一種低成本高密度的FPGA芯片系列,是首選的中規模器件產品。它具有如下特點:
        * ACEX 1K采用查找表(LUT)和EAB(嵌入式陣列塊)相結合的結構,特別適用于實現復雜邏輯功能存儲器功能,例如通信中應用的數字信號處理、多通道數據處理、數據傳遞和微控制等。
        * 典型門數為1萬到10萬門,有多達49152位的RAM(每個EAB有4096位RAM)。
        * 器件內核采用2.5V電壓,功耗低,能夠提供高達250MHz的雙向I/O功能,完全支持33MHz和66MHz的PCI局部總線標準。
        * 具有快速連續式、延時可預測的快速通道互連;具有實現快速加法器、計數器、乘法器和比較器等算術功能的專用進位鏈,以及實現高速多扇入邏輯功能的專用級連接。
        通過仿真、綜合,并下載到FPGA中進行驗證,本設計可以很好地實現其功能?!?/P>

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

        塵埃粒子計數器相關文章:塵埃粒子計數器原理


        關鍵詞: FPGA IP VHDL

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 砚山县| 定日县| 察隅县| 商城县| 高唐县| 中卫市| 小金县| 卫辉市| 怀集县| 苗栗市| 乌兰察布市| 卓尼县| 曲周县| 黄浦区| 淳安县| 扶绥县| 化隆| 贵德县| 前郭尔| 措美县| 天全县| 息烽县| 诏安县| 石楼县| 临潭县| 利津县| 历史| 新兴县| 虹口区| 江安县| 交口县| 大余县| 孟村| 五大连池市| 黄冈市| 岳普湖县| 滦平县| 靖宇县| 扎赉特旗| 乐平市| 德庆县|