新四季網

一種基於FPGA/CPLD的多通道數據緩存實現方法與流程

2023-07-29 19:47:11


本發明屬於電子設計自動化領域,涉及一種多通道數據緩存實現方法,具體涉及一種基於FPGA/CPLD的多通道數據緩存實現方法。

背景技術:
在計算機廣泛應用的今天,數據採集的重要性是十分顯著的,它是計算機與外部物理世界連接的橋梁,廣泛應用於工業領域、汽車行業、交通運輸、航空航天、電力能源及土木工程等領域。數據緩存是數據採集過程中的重要環節,尤其是高速採集領域,數據緩存技術直接限制了採樣頻率的上限,影響了採樣質量。在高速數據緩存方面,現場可編程門陣列(FPGA)擁有普通單片機和數位訊號處理器(DSP)無法比擬的優勢,FPGA打破了順序執行的模式,在每個時鐘周期內完成更多的處理任務,超越了DSP的運算能力,FPGA的時鐘頻率高、內部時延小,全部控制邏輯都可由硬體完成,而且速度快,組成形式靈活,並可以集成外圍控制、解碼和接口電路。而且利用EDA工具進行設計、綜合和驗證,可加速設計過程,降低開發風險,縮短了開發周期,但現有的數據緩存的過程中,多通道數據存儲時,各通道數據流的控制邏輯比較複雜,極易出現數據丟包現象,而且常常會出現存儲空間的浪費。

技術實現要素:
本發明的目的在於克服上述現有技術的缺點,提供了一種基於FPGA/CPLD的多通道數據緩存實現方法,該方法充分利用RAM存儲空間,並且利用數字電路本身特性,通過合理設計計數器,大大簡化了控制邏輯時序的編程,數據存儲可靠性大大提高。為達到上述目的,本發明所述的基於FPGA/CPLD的多通道數據緩存實現方法包括以下步驟:1)判斷RAM中每個存儲單元的字節數RN的大小,當RAM中每個存儲單元的字節數RN大於1時,則將RAM中的每個存儲單元平均劃分為RN個單元,當RAM中每個存儲單元的字節數RN等於1時,則不進行處理;2)在RAM中為每個通道劃分出獨立的緩存區,再根據每個通道數據的字節數BN及採樣頻率確定各緩存區的字節數CS,其中,CS≥BN,然後對通道進行編碼,其中,通道的編碼按緩存區從低字節到高字節的方向以及從低地址到高地址的方向逐個增加,設通道的個數為CN,則有CN*CS≤RN*2^AN,其中,AN為RAM地址的位數;3)單片機通過0x8010操作埠將初始目標地址的低8位寫入CPLD/FPGA地址緩存器的ADDR_BUF[7..0]中,並通過0x8011操作埠將將初始目標地址的高8位寫入CPLD/FPGA地址緩存器的ADDR_BUF[15..8]中,再將CPLD/FPGA地址緩存器中ADDR_BUF內的初始目標地址通過0x8012操作埠寫入RAM地址寄存器的DMAwrAddr及MCUrdAddr中;4)單片機通過0x8020操作埠啟動採樣脈衝,鎖存各通道當前的通道數據,並啟動DMA,然後啟動計數器DMAcnt,計數器DMAcnt由高位AddrH及低位AddrL拼接而成;5)在DMAcnt信號的驅動下,計數器DMAcnt中低位AddrL記一次數對應相鄰RN個通道的緩存區地址加1,再以計數器DMAcnt作為多通道選擇器的控制位,將通過多通道選擇器的控制位選出的對應通道數據放置到數據線上,然後在寫信息號的操作下,將通道數據寫入到對應通道的緩存區內,當計數器DMAcnt中的低位AddrL計數溢出時,則表示相鄰RN個通道數據成功存入對應通道的緩存區內,當計數器DMAcnt的低位AddrL計數溢出時,則會自動向計數器DMAcnt的高位AddrH加1,此時當計數器DMAcnt的高位AddrH的數據地址為高位,則將地址自動指向下一個相鄰RN個通道,同時計數器DMAcnt的低位AddrL重新計數,並開始下一個相鄰RN個通道數據的寫入,從而將所有通道數據存入對應緩存區中;6)當所有通道數據存入到對應緩存區後,計數器DMAcnt的高位AddrH產生溢出,並產生脈衝信號,表示CN個通道一次採樣數據存入完成,然後給RAM地址寄存器中DMAwrAddr的地址中間部分AddrM加1,避免新採樣數據覆蓋上次採樣數據,當RAM地址寄存器中DMAwrAddr的地址中間部分AddrM溢出後,給各通道地址重新賦予初始地址,進而實現循環數據緩存。步驟3)中將CPLD/FPGA地址緩存器中ADDR_BUF內的初始目標地址通過0x8012操作埠寫入RAM地址寄存器的DMAwrAddr及MCUrdAddr的具體操作為:當0x8012埠寫入數據的第0位為1,即bit0=1時,將CPLD/FPGA地址緩存器中ADDR_BUF內的初始目標地址寫入到RAM地址寄存器的MCUrdAddr中,當0x8012埠寫入數據的第3位為1,即bit3=1時,CPLD/FPGA地址緩存器中ADDR_BUF內的初始目標地址寫入到RAM地址寄存器的DMAwrAddr中。RAM地址寄存器的DMAwrAddr由地址高位AddrH、地址中間部分AddrM及地址低位AddrL三部分拼接而成,其中,地址高位AddrH的位數等於log2(CN/RN),地址中間部分AddrM的位數等於log2(CS)減去地址低位AddrL的位數,地址低位AddrL的位數等於log2(BN)。本發明具有以下有益效果:本發明所述的基於FPGA/CPLD的多通道數據緩存實現方法實現多通道數據緩存的過程中,單片機的讀地址及DMA寫地址各自獨立操作,在DMAcnt信號驅動下,RAM讀地址和寫地址分時佔用數據線,讀操作和寫操作互不幹擾;本發明中通過分析通道地址與通道數據間的對應關係,巧妙的設計了計數器DMAcnt,十分方便的將通道地址與通道數據在邏輯時序上對應起來,大大簡化了編程難度,適用於多通道的數據存儲。附圖說明圖1為本發明中實施例一的設計原理圖;圖2為本發明中實施例一中RAM的原理圖;圖3為本發明中實施例一中寫入初始目標地址過程中的波形圖;圖4為本發明中實施例一中計數器DMAcnt計數時從0到2的過程中的仿真波形圖;圖5為本發明中實施例一中計數器DMAcnt計數時從3到5的過程中的仿真波形圖;圖6為本發明中實施例一中計數器DMAcnt計數時從6到7的過程中的仿真波形圖;圖7為本發明中實施例一中計數器DMAcnt計數時從8到10的過程中的仿真波形圖;圖8為本發明中實施例一中計數器DMAcnt計數時從11到13的過程中的仿真波形圖;圖9為本發明中實施例一中計數器DMAcnt計數時從14到15的過程中的仿真波形圖。具體實施方式下面結合附圖對本發明做進一步詳細描述:本發明所述的基於FPGA/CPLD的多通道數據緩存實現方法包括以下步驟:1)判斷RAM中每個存儲單元的字節數RN的大小,當RAM中每個存儲單元的字節數RN大於1時,則將RAM中的每個存儲單元平均劃分為RN個單元,當RAM中每個存儲單元的字節數RN等於1時,則不進行處理;2)在RAM中為每個通道劃分出獨立的緩存區,再根據每個通道數據的字節數BN及採樣頻率確定各緩存區的字節數CS,其中,CS≥BN,然後對通道進行編碼,其中,通道的編碼按緩存區從低字節到高字節的方向以及從低地址到高地址的方向逐個增加,設通道的個數為CN,則有CN*CS≤RN*2^AN,其中,AN為RAM地址的位數;3)單片機通過0x8010操作埠將初始目標地址的低8位寫入CPLD/FPGA地址緩存器的ADDR_BUF[7..0]中,並通過0x8011操作埠將將初始目標地址的高8位寫入CPLD/FPGA地址緩存器的ADDR_BUF[15..8]中,再將CPLD/FPGA地址緩存器中ADDR_BUF內的初始目標地址通過0x8012操作埠寫入RAM地址寄存器的DMAwrAddr及MCUrdAddr中;4)單片機通過0x8020操作埠啟動採樣脈衝,鎖存各通道當前的通道數據,並啟動DMA,然後啟動計數器DMAcnt,計數器DMAcnt由高位AddrH及低位AddrL拼接而成;5)在DMAcnt信號的驅動下,計數器DMAcnt中低位AddrL記一次數對應相鄰RN個通道的緩存區地址加1,再以計數器DMAcnt作為多通道選擇器的控制位,將通過多通道選擇器的控制位選出的對應通道數據放置到數據線上,然後在寫信息號的操作下,將通道數據寫入到對應通道的緩存區內,當計數器DMAcnt中的低位AddrL計數溢出時,則表示相鄰RN個通道數據成功存入對應通道的緩存區內,當計數器DMAcnt的低位AddrL計數溢出時,則會自動向計數器DMAcnt的高位AddrH加1,此時當計數器DMAcnt的高位AddrH的數據地址為高位,則將地址自動指向下一個相鄰RN個通道,同時計數器DMAcnt的低位AddrL重新計數,並開始下一個相鄰RN個通道數據的寫入,從而將所有通道數據存入對應緩存區中;6)當所有通道數據存入到對應緩存區後,計數器DMAcnt的高位AddrH產生溢出,並產生脈衝信號,表示CN個通道一次採樣數據存入完成,然後給RAM地址寄存器中DMAwrAddr的地址中間部分AddrM加1,避免新採樣數據覆蓋上次採樣數據,當RAM地址寄存器中DMAwrAddr的地址中間部分AddrM溢出後,給各通道地址重新賦予初始地址,進而實現循環數據緩存。步驟3)中將CPLD/FPGA地址緩存器中ADDR_BUF內的初始目標地址通過0x8012操作埠寫入RAM地址寄存器的DMAwrAddr及MCUrdAddr的具體操作為:當0x8012埠寫入數據的第0位為1,即bit0=1時,將CPLD/FPGA地址緩存器中ADDR_BUF內的初始目標地址寫入到RAM地址寄存器的MCUrdAddr中,當0x8012埠寫入數據的第3位為1,即bit3=1時,CPLD/FPGA地址緩存器中ADDR_BUF內的初始目標地址寫入到RAM地址寄存器的DMAwrAddr中。RAM地址寄存器的DMAwrAddr由地址高位AddrH、地址中間部分AddrM及地址低位AddrL三部分拼接而成,其中,地址高位AddrH的位數等於log2(CN/RN),地址中間部分AddrM的位數等於log2(CS)減去地址低位AddrL的位數,地址低位AddrL的位數等於log2(BN)。實施例一參考圖1、圖2、圖3、圖4、圖5、圖6、圖7、圖8及圖9,RAM為512x16bit,即AN等於19,RN等於2,通道數CN等8,每通道採集數據為32位,即BN等於4,RAM中每個通道劃分區域大小CS為64K字節,具體實現包括以下步驟:1)劃分RAM,RAM中的每個存儲單元為2個字節,故將RAM每個存儲單元劃分為2個單字節單元;2)在RAM中為每個通道劃分出獨立的緩存區,每塊緩存區的字節數劃分成64Kbits,其中,緩存區佔用RAM一半空間,故將RAM最高位地址在FPGA裡面設為0,即A18等於0;3)單片機將初始目標地址的低8位寫入CPLD/FPGA地址緩存器的ADDR_BUF[7..0],操作埠為0x8010,操作數為0x00,並將初始目標地址的高8位寫入CPLD/FPGA地址緩存器的ADDR_BUF[15..8],操作埠為0x8011,操作數為0x00,將CPLD/FPGA地址緩存器ADDR_BUF中地址寫入RAM地址寄存器DMAwrAddr及MCUrdAddr,操作埠為0x8012,操作數據為0x09(bit3=1、bit0=1),ADDR_BUF的內容同時寫入單片機地址操作寄存器MCUrdAddr及DMA地址寄存器DMAwrAddr,其中,DMA地址寄存器DMAwrAddr共18位,最高位定位0,RAM地址寄存器的DMAwrAddr由地址高位AddrH、地址中間部分AddrM及地址低位AddrL三部分拼接而成,地址高位AddrH的位數等於2,地址中間部分AddrM的位數等於14,地址低位AddrL的位數等於2;4)單片機啟動採樣脈衝,操作埠為0x8020,鎖存各通道當前數據並啟動DMA,隨後啟動計數器DMAcnt,計數器DMAcnt由低位AddrH和高位AddrL兩部分拼接而成,位數為4;5)在DMAcnt信號驅動下,計數器DMAcnt的低位AddrL計數對應相鄰2個通道的緩存區地址的按字節逐個增加,計數器DMAcnt為0x00時,地址對應0x00000,DMAcnt為0x03時,地址對應0x00003,此時以計數器DMAcnt作為多通道選擇器的控制位選出對應通道編碼,並將選出的通道編碼放在數據線上,計數器DMAcnt為0x00時,對應數據為0x1212,DMAcnt為0x03時,對應數據為0x7878,在寫信號作用下,數據被寫入對應通道的緩存區,即通道0和通道1的0x00000被寫入0x12,通道0和通道1的0x00003被寫入0x78;6)當DMAcnt低位AddrL計數溢出後,表示相鄰2個通道數據成功存入對應通道的緩存區,計數器DMAcnt高位AddrL計數溢出會自動向MAcnt高位AddrH加1,如之前地址為0x00000,現在則變為0x10000,即實現了地址自動指向下一個2個相鄰通道,此時計數器DMAcnt的低位AddrL繼續開始計數,可實現新2個相鄰通道數據寫入,如此可以將所有通道數據存入對應緩存區;7)所有通道數據存入對應緩存區後,計數器DMAcnt的高位AddrH會產生溢出,產生一個脈衝信號intY[0],表示8個通道數據全部存入完成,此時將RAM地址寄存器中DMAwrAddr的地址中間部分AddrM加1,即第二次採集緩存地址從0x00004開始,以免新採樣數據覆蓋上次採樣數據;8)RAM地址寄存器中DMAwrAddr的地址中間部分AddrM溢出後,各通道地址重新賦予初始地址,如此循環可實現數據持續存儲。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀