<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 基于FPGA的PCI總線(xiàn)串口卡設計

基于FPGA的PCI總線(xiàn)串口卡設計

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

本文引用地址:http://dyxdggzs.com/article/191527.htm

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

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

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



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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>