<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 基于FPGA的PCI總線串口卡設(shè)計(jì)

          基于FPGA的PCI總線串口卡設(shè)計(jì)

          作者: 時(shí)間:2010-10-18 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/191527.htm

          1.1.1 空間配置模塊
           協(xié)議支持3種地址空間:I/O空間、內(nèi)存空間和配置空間。配置空間是所特有的一種空間,其大小為256 B,前64 B是必需的,記錄了PCI設(shè)備的基本信息。PCI設(shè)備的一些主要的信息如下:
           (1) VendorID、DeviceID:分別表示設(shè)備的生產(chǎn)廠商和設(shè)備編號(hào)。
           (2) Command:命令寄存器,包含設(shè)備控制位,包括允許存儲(chǔ)器讀寫(xiě)響應(yīng)等。
           (3) Status:狀態(tài)寄存器,記錄PCI的相關(guān)事件信息。
           (4) Base Adress Register:基地址寄存器,指示此PCI設(shè)備按I/O方式還是按內(nèi)存方式進(jìn)行讀寫(xiě)以及需要的地址空間大小。
           (5) Interrupt Line、Interrupt Pin:為設(shè)備使用的中斷號(hào)和中斷引腳。
          1.1.2 偶校驗(yàn)?zāi)K
           PCI的偶校驗(yàn)用于檢驗(yàn)數(shù)據(jù)傳輸是否正確。在PCI上,利用偶校驗(yàn)?zāi)K檢查每次傳輸中主設(shè)備是否正確地尋址到目標(biāo)設(shè)備,以及它們之間的數(shù)據(jù)是否正確地傳輸。
          1.1.3 地址譯碼和命令譯碼模塊
           地址譯碼模塊主要用于檢測(cè)地址與此PCI設(shè)備的基地址是否匹配,如果匹配,則PCI設(shè)備響應(yīng)當(dāng)前的總線操作。
           命令譯碼模塊表示PCI串口設(shè)備響應(yīng)不同的總線命令,通過(guò)檢測(cè)PCI-cbe[3:0]信號(hào)線上的值,完成命令譯碼。
          1.1.4 設(shè)備狀態(tài)機(jī)模塊
           PCI總線接口電路是時(shí)序復(fù)雜的接口電路,它的復(fù)雜性由PCI總線操作的多樣性決定。根據(jù)PCI的總線操作類型和總線操作時(shí)序關(guān)系,在這里抽象出一種簡(jiǎn)潔明了,符合總線時(shí)序、更易于硬件描述語(yǔ)言實(shí)現(xiàn)的狀態(tài)機(jī)??偩€接口狀態(tài)機(jī)示意圖如圖4所示。狀態(tài)機(jī)的設(shè)計(jì)是整個(gè)設(shè)計(jì)的核心部分,利用該狀態(tài)機(jī)可以完成配置寄存器、存儲(chǔ)器、I/O的讀寫(xiě)操作。

           狀態(tài)機(jī)包括4個(gè)狀態(tài):空閑(idle)狀態(tài)、配置讀寫(xiě)(con)狀態(tài)、存儲(chǔ)器或I/O讀寫(xiě)(rw)狀態(tài)、傳輸中止(backoff)狀態(tài)。系統(tǒng)復(fù)位后,狀態(tài)機(jī)轉(zhuǎn)入空閑狀態(tài),在空閑狀態(tài)中采樣總線,并根據(jù)總線的變化來(lái)決定狀態(tài)機(jī)即將轉(zhuǎn)入的狀態(tài)。如果此時(shí)命令總線上是配置寄存器讀寫(xiě)命令,判斷PCI-irdy信號(hào)是否有效來(lái)決定下一可能的狀態(tài)。如果信號(hào)無(wú)效,則狀態(tài)機(jī)轉(zhuǎn)入傳輸中止?fàn)顟B(tài),然后返回空閑狀態(tài);如果信號(hào)有效,則狀態(tài)機(jī)轉(zhuǎn)入配置讀寫(xiě)狀態(tài)。如果此時(shí)命令總線上是存儲(chǔ)器或者I/O的讀寫(xiě)命令,則判斷PCI-frame信號(hào)是否有效來(lái)決定下一可能的狀態(tài)。如果信號(hào)無(wú)效,狀態(tài)機(jī)轉(zhuǎn)入傳輸中止?fàn)顟B(tài),然后返回空閑狀態(tài);如果信號(hào)有效,狀態(tài)機(jī)轉(zhuǎn)入存儲(chǔ)器或I/O讀寫(xiě)狀態(tài)。
          1.2 UART模塊
           PCI總線傳輸?shù)氖遣⑿袛?shù)據(jù),而串口傳輸?shù)氖谴袛?shù)據(jù),要想實(shí)現(xiàn)PCI總線與串口的數(shù)據(jù)傳輸,必須通過(guò)UART完成數(shù)據(jù)的串并/并串轉(zhuǎn)換。本文設(shè)計(jì)的基于的UART由4個(gè)模塊組成:波特率發(fā)生器模塊、寄存器控制模塊、接收模塊以及發(fā)送模塊。UART的總體框圖如圖5所示。

          1.2.1 波特率發(fā)生器模塊
           波特率發(fā)生器實(shí)際上就是一個(gè)分頻器,用來(lái)產(chǎn)生和串行通信所采用的波特率同步的時(shí)鐘,這樣才能按照串行通信的時(shí)序要求進(jìn)行數(shù)據(jù)接收或發(fā)送[3]。本設(shè)計(jì)中UART收發(fā)的每一個(gè)數(shù)據(jù)寬度都是波特率發(fā)生器輸出時(shí)鐘周期的16倍,即假定當(dāng)前按照9 600 b/s進(jìn)行收發(fā),那么波特率發(fā)生器輸出的時(shí)鐘頻率應(yīng)為9 600×16 Hz。
          1.2.2 寄存器控制模塊
           設(shè)計(jì)的UART包括:2個(gè)數(shù)據(jù)緩沖寄存器(接收、發(fā)送緩沖寄存器);2個(gè)狀態(tài)寄存器(中斷識(shí)別、線路狀態(tài)寄存器);2個(gè)控制寄存器(中斷使能、線路控制寄存器);2個(gè)移位寄存器(接收、發(fā)送移位寄存器)。寄存器控制模塊完成除了移位寄存器外的所有寄存器的讀寫(xiě)控制。
          1.2.3 接收模塊
           接收模塊包括接收緩沖寄存器和接收移位寄存器。在接收數(shù)據(jù)開(kāi)始時(shí),為了能夠準(zhǔn)確地傳輸數(shù)據(jù),先要清空接收緩沖寄存器和接收移位寄存器,然后接收移位寄存器等待檢測(cè)數(shù)據(jù)的起始位。檢測(cè)到有效的起始位后開(kāi)始接收數(shù)據(jù),同時(shí)啟動(dòng)接收數(shù)據(jù)計(jì)數(shù)器,統(tǒng)計(jì)接收數(shù)據(jù)的位數(shù),直到接收到滿足需求的數(shù)據(jù)位。如果需要奇偶校驗(yàn),則產(chǎn)生校驗(yàn)位。最后接收停止位,完成1幀數(shù)據(jù)(起始位+數(shù)據(jù)位+奇偶校驗(yàn)位+停止位)的接收,將數(shù)據(jù)存入接收緩沖寄存器,進(jìn)行下一幀數(shù)據(jù)的接收,并通知上位機(jī)讀取數(shù)據(jù)。



          關(guān)鍵詞: FPGA PCI 總線 串口

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();