基于FPGA狀態(tài)機(jī)和片上總線的CompactPCI異步串口板設(shè)計(jì)方案
(1)雙口SDRAM
本文引用地址:http://butianyuan.cn/article/248894.htm采用IDT7132芯片作為數(shù)據(jù)緩沖區(qū),容量2k×8bit,讀寫周期均為20ns。為了避免上位機(jī)正在更新某數(shù)據(jù)區(qū),而與該數(shù)據(jù)區(qū)對(duì)應(yīng)的異步串口要求發(fā)送該數(shù)據(jù)區(qū)的情況,在設(shè)計(jì)中將雙口SDRAM的存儲(chǔ)空間分為兩部分,即上位機(jī)可寫訪問(wèn)的一級(jí)緩沖區(qū)和WB總線處理邏輯可寫訪問(wèn)的二級(jí)緩沖區(qū)。對(duì)應(yīng)36通路,一級(jí)和二級(jí)緩沖區(qū)均分成了72個(gè)子區(qū),每路異步串口對(duì)應(yīng)著一級(jí)緩沖區(qū)內(nèi)的一對(duì)發(fā)送子區(qū)和接收子區(qū),以及二級(jí)緩沖區(qū)內(nèi)的一對(duì)發(fā)送子區(qū)和接收子區(qū)。上位機(jī)可讀寫一級(jí)發(fā)送子區(qū),但只能讀一級(jí)接收子區(qū);WB總線處理邏輯只能讀一級(jí)發(fā)送子區(qū),可讀寫一級(jí)接收子區(qū)和二級(jí)所有子區(qū)。
(2)FPGA芯片
FPGA芯片為串口板核心器件,選用XC3S2000-4 FG456芯片,I/O口速度達(dá)到5ns。
?、賅B片內(nèi)總線
即WISHBONE片內(nèi)總線,是一種應(yīng)用普遍的、具有靈活性的IP核互聯(lián)接口。
?、诋惒绞瞻l(fā)器
異步收發(fā)器為IP軟核,來(lái)源于opencores開源組織,支持WISHBONE接口,與通用異步收發(fā)器兼容,每個(gè)可實(shí)現(xiàn)一路全雙工異步串口通訊。
?、垭p口SDRAM總線接口邏輯
片內(nèi)有兩個(gè)獨(dú)立的雙口SDRAM總線接口邏輯,分別實(shí)現(xiàn)了雙口SDRAM與WISHBONE總線和LOCAL總線的邏輯連接。
④LOCAL總線寄存器區(qū)
為了方便上位機(jī)對(duì)各異步串口獨(dú)立靈活配置、全面監(jiān)控工作狀態(tài),必須設(shè)置可供上位機(jī)訪問(wèn)的若干配置寄存器和狀態(tài)寄存器, 而且LOCAL總線寄存器區(qū)邏輯是上位機(jī)與片內(nèi)WB總線處理邏輯之間的通訊橋梁。
?、莸刂纷g碼邏輯
片內(nèi)有兩個(gè)獨(dú)立的地址譯碼邏輯,分別根據(jù)LOCAL總線地址和WISHBONE總線地址,片選總線從邏輯。
?、薮诮邮諡V波邏輯
片內(nèi)36個(gè)獨(dú)立的串口接收濾波邏輯,每個(gè)對(duì)應(yīng)一路異步收發(fā)器的接收端,可濾除正負(fù)跳變寬度小于1ms的毛刺,但會(huì)造成1ms的信號(hào)延遲。
⑦WB總線處理邏輯
即WISHBONE總線狀態(tài)機(jī),實(shí)現(xiàn)了訪問(wèn)WISHBONE總線、數(shù)據(jù)處理、數(shù)據(jù)存儲(chǔ)和各串口通訊協(xié)議的功能。主要任務(wù)是根據(jù)上位機(jī)設(shè)置的LOCAL總線配置寄存器區(qū),設(shè)置各異步收發(fā)器的工作模式,接收串口數(shù)據(jù),遵循通訊協(xié)議,發(fā)送串口數(shù)據(jù),完成一級(jí)、二級(jí)緩沖區(qū)數(shù)據(jù)更新或復(fù)制,并將各串口通道的工作狀態(tài)標(biāo)識(shí)到LOCAL總線狀態(tài)寄存器區(qū),供上位機(jī)查詢。
2.2.2 處理流程
如果上位機(jī)請(qǐng)求更新一級(jí)緩沖區(qū)的某子區(qū),上位機(jī)查詢“FPGA訪問(wèn)雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,若為真,則等待;否則置位“上位機(jī)訪問(wèn)雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,更新一級(jí)緩沖區(qū)的發(fā)送子區(qū),完畢后復(fù)位“上位機(jī)訪問(wèn)雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,產(chǎn)生“更新二級(jí)緩沖區(qū)的中斷請(qǐng)求”。WB總線處理邏輯響應(yīng)該中斷,查詢“上位機(jī)訪問(wèn)雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,若為真,則等待;否則置位“FPGA訪問(wèn)雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,讀訪問(wèn)一級(jí)緩沖區(qū)的相應(yīng)發(fā)送子區(qū),并存入二級(jí)緩沖區(qū)的相應(yīng)發(fā)送子區(qū),完畢后復(fù)位“FPGA訪問(wèn)雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”。在WB總線處理邏輯更新二級(jí)緩沖區(qū)期間,暫不響應(yīng)異步串口交易中斷。
如果某異步收發(fā)器存在接收發(fā)送任務(wù),即串口交易中斷請(qǐng)求存在,WB總線處理邏輯讀訪問(wèn)該異步收發(fā)器的中斷狀態(tài)寄存器,如果是發(fā)送中斷,繼續(xù)發(fā)送下一字節(jié),并退出,循環(huán)直至發(fā)送幀結(jié)束;如果是接收中斷,讀訪問(wèn)接收數(shù)據(jù)寄存器,并將數(shù)據(jù)存入二級(jí)緩沖區(qū)對(duì)應(yīng)接收子區(qū)。每接收一個(gè)字節(jié)后,延遲半位,未出現(xiàn)新的接收數(shù)據(jù)中斷,則認(rèn)為已收到完整數(shù)據(jù)幀。隨后設(shè)置“二級(jí)緩沖區(qū)接收子區(qū)覆蓋一級(jí)緩沖區(qū)接收子區(qū)”中斷請(qǐng)求。如果上位機(jī)未訪問(wèn)一級(jí)緩沖區(qū),則WB總線處理邏輯響應(yīng)上述中斷,執(zhí)行二級(jí)至一級(jí)的某接收子區(qū)“數(shù)據(jù)復(fù)制”,任務(wù)結(jié)束后,清相應(yīng)中斷;如果上位機(jī)正在訪問(wèn)一級(jí)緩沖區(qū),則等待時(shí)機(jī)再?gòu)?fù)制數(shù)據(jù)。
fpga相關(guān)文章:fpga是什么
評(píng)論