鄭凡凡,周天熠,王 昕,叢 偉,羅興科
(北京宇航系統(tǒng)工程研究所,北京,100076)
測(cè)量系統(tǒng)數(shù)字量變換器用于接收控制系統(tǒng)發(fā)送的三路異步RS422協(xié)議信號(hào)[1],并將數(shù)據(jù)形成一定碼流送給后級(jí)中心程序器。數(shù)字量變換器由數(shù)據(jù)綜合板和數(shù)據(jù)采集板組成。數(shù)據(jù)綜合板和數(shù)據(jù)采集板的模塊功能分別如圖1和圖2所示。
圖1 數(shù)據(jù)采集模塊功能Fig.1 Functional block of a data acquisition board
數(shù)據(jù)采集板用于接收控制系統(tǒng)的RS422 協(xié)議信號(hào),將串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)并存入外置FIFO 芯片,在與數(shù)據(jù)綜合模塊進(jìn)行數(shù)據(jù)交互時(shí),在讀使能信號(hào)和片選地址信號(hào)的作用下,將并行數(shù)據(jù)送至數(shù)據(jù)綜合模塊??偩€驅(qū)動(dòng)芯片用于控制數(shù)據(jù)方向。
數(shù)據(jù)綜合板用于接收中心程序器的幀同步信號(hào)和移位脈沖信號(hào),從外置FLASH 中讀取已提前寫(xiě)入的波道表信息,生成讀使能信號(hào)和地址信號(hào)送至數(shù)據(jù)采集模塊,同時(shí)獲取數(shù)據(jù)采集模塊的并行數(shù)據(jù),并形成串行碼流送至中心程序器。
隨著技術(shù)的發(fā)展,電子電路變得越來(lái)越復(fù)雜,利用軟件進(jìn)行電路仿真設(shè)計(jì)開(kāi)始發(fā)揮越來(lái)越重要的作用。但是在過(guò)去十余年中,在數(shù)字量變換器的研制過(guò)程中,未能針對(duì)整機(jī)及模塊中的關(guān)鍵元器件(如先進(jìn)先出存儲(chǔ)器(First-in First-out Memory,F(xiàn)IFO)、閃存(FLASH))進(jìn)行全面、系統(tǒng)的仿真,軟件開(kāi)發(fā)方測(cè)試或者軟件第三方測(cè)評(píng)只針對(duì)兩種模塊的可編程邏輯器件(Complex Programmable Logic Device,CPLD)的Verilog 程序[2],未包含CPLD 與外置FIFO 芯片、與外置FLASH 芯片的數(shù)據(jù)交互過(guò)程,更未體現(xiàn)兩個(gè)模塊間的數(shù)據(jù)交互過(guò)程。究其原因在于這些關(guān)鍵元器件功能復(fù)雜,模型建立非常困難,市面上沒(méi)有能夠直接使用的模型。元器件的模型無(wú)法建立,模塊或整機(jī)的仿真就無(wú)法進(jìn)行,只能在產(chǎn)品研制出來(lái)后,靠設(shè)計(jì)經(jīng)驗(yàn)和萬(wàn)用表、示波器進(jìn)行調(diào)試,模塊間、產(chǎn)品間聯(lián)試一旦出現(xiàn)問(wèn)題,故障機(jī)理不清,排查、定位困難重重,產(chǎn)品歸零工作負(fù)擔(dān)巨大。
從元器件級(jí)功能性能特性入手開(kāi)展建模,進(jìn)而開(kāi)展模塊級(jí)和整機(jī)級(jí)仿真,就能夠在設(shè)計(jì)階段提早發(fā)現(xiàn)和解決絕大多數(shù)設(shè)計(jì)問(wèn)題,并在產(chǎn)品發(fā)生故障時(shí)進(jìn)行快速定位和驗(yàn)證,有效提高設(shè)計(jì)能力和試驗(yàn)效率。
綜上所述,本文使用ISE14.7 和Modelsim SE-64 10.4,使用Xilinx 公司的FPGA XC4VSX35-10ff668,針對(duì)數(shù)字量變換器整機(jī)建模問(wèn)題,深入研究對(duì)關(guān)鍵元器件進(jìn)行建模,對(duì)元器件模型進(jìn)行互連建立單個(gè)模塊的模型,對(duì)模塊模型互連從而得到整機(jī)的模型,同時(shí)針對(duì)模塊間接口信號(hào)進(jìn)行仿真并分析其時(shí)序關(guān)系,將該關(guān)鍵設(shè)計(jì)要素直接顯示在仿真軟件中,增強(qiáng)軟件的可靠性。
基于圖2,欲建立數(shù)據(jù)綜合模塊模型,須先建立其中關(guān)鍵元器件FLASH模型。
外置FLASH 具體型號(hào)為AT49F512,對(duì)FLASH既可進(jìn)行讀取操作,也可進(jìn)行寫(xiě)入操作,并且斷電時(shí)不會(huì)丟失數(shù)據(jù)。在數(shù)據(jù)綜合模塊中,提前將波道表文件(.dat文件)下載到FLASH中,在產(chǎn)品上電后邏輯器件CPLD 從FLASH 中讀取其中存儲(chǔ)的波道數(shù)據(jù),進(jìn)而生成用于板間交互的片選地址信號(hào)。
Xilinx 公司的FPGA 提供了大量的存儲(chǔ)器資源,包含內(nèi)嵌塊存儲(chǔ)器、分布式存儲(chǔ)器以及移位寄存器,利用這些資源可以生成深度、位寬可配置的只讀存儲(chǔ)器(Read-Only Memory,ROM)、FIFO以及移位寄存器等存儲(chǔ)邏輯[3]。ROM 存儲(chǔ)的數(shù)據(jù)穩(wěn)定,斷電后所存數(shù)據(jù)不會(huì)改變,并且結(jié)構(gòu)簡(jiǎn)單使用方便。結(jié)合數(shù)據(jù)綜合板對(duì)FLASH 的使用方式,使用FPGA 的ROM IP核對(duì)其進(jìn)行建模。
在ISE14.7 建立工程后,在存儲(chǔ)器IP 核配置界面設(shè)置其為“Single Port ROM”,位寬設(shè)置為8 位,深度根據(jù)波道表中存儲(chǔ)數(shù)據(jù)量而定(此處設(shè)置為256)。另外根據(jù)波道表形成存儲(chǔ)器初始化文件(.coe 文件)對(duì)ROM核進(jìn)行初始化[4],生成的ROM核完全具備外置FLASH的功能。
編寫(xiě)測(cè)試文件對(duì)ROM 核進(jìn)行數(shù)據(jù)讀取,可讀出其中存儲(chǔ)的波道表,具體如圖3 所示。從圖3 可以看出,輸出信號(hào)在1、2、3 之間變化,可用于代表第1路RS422 信 號(hào)、第2 路RS422 信號(hào)、第3 路RS422 信號(hào)。在空余波道處讀出了預(yù)先寫(xiě)入的FF。
圖3 對(duì)ROM核讀取其存儲(chǔ)波道表Fig.3 Read the data of the ROM IP core
基于圖2,對(duì)FLASH 建立模型后,針對(duì)原有的CPLD+FLASH架構(gòu),使用FPGA進(jìn)行替代。即CPLD中Verilog代碼經(jīng)過(guò)適應(yīng)性修改移植到FPGA中,同時(shí)使用FPGA的ROM核對(duì)FLASH進(jìn)行建模。最終,數(shù)據(jù)綜合模塊可抽象為ISE中的一個(gè)工程。圖4為數(shù)據(jù)綜合模塊的ISE工程,該模塊的輸入輸出信號(hào)如圖5所示。
圖4 數(shù)據(jù)綜合模塊開(kāi)發(fā)工程Fig.4 The development project of the data fusion board
圖5 數(shù)據(jù)綜合模塊輸入輸出信號(hào)Fig.5 Input and output signals of the data fusion board
頂層文件XPC.v調(diào)用rom核后,接收中心程序器的幀同步信號(hào)frame 和碼同步信號(hào)shift,接收數(shù)據(jù)采集板的并行數(shù)據(jù)q,接收本地時(shí)鐘clk,向數(shù)據(jù)采集板輸出讀使能信號(hào)read和波道地址信號(hào)addr,向中心程序器輸出串行碼流data信號(hào)。
基于圖1,欲建立數(shù)據(jù)采集模塊模型,須先建立其中關(guān)鍵元器件FIFO模型。
外置FIFO 具體型號(hào)為IDT7205,F(xiàn)IFO 存儲(chǔ)器是雙口緩沖器,其中一個(gè)是存儲(chǔ)器的輸入口,另一個(gè)是存儲(chǔ)器的輸出口,常用于數(shù)據(jù)的緩存或者高速異步數(shù)據(jù)的交互。此外,F(xiàn)IFO具有滿指示信號(hào)full和空指示信號(hào)empty。當(dāng)full 信號(hào)有效時(shí),就不再往FIFO 中寫(xiě)入數(shù)據(jù),當(dāng)empty信號(hào)有效時(shí),就不能再?gòu)腇IFO中讀取數(shù)據(jù)[5]。
在數(shù)據(jù)采集模塊中,異步串口數(shù)據(jù)接收模塊(uart.v)將外部的異步串行數(shù)據(jù)轉(zhuǎn)化為8 位位寬的字節(jié)數(shù)據(jù),完成串轉(zhuǎn)并操作,同時(shí)生成控制FIFO 寫(xiě)使能信號(hào),并行數(shù)據(jù)在寫(xiě)使能信號(hào)作用下被寫(xiě)入FIFO中。結(jié)合數(shù)據(jù)采集模塊對(duì)外置FIFO 的使用方式,使用FPGA自帶的FIFO IP核對(duì)其進(jìn)行建模[6]。
在ISE14.7 建立工程后,在存儲(chǔ)器IP 核配置界面設(shè)置FIFO 類型為“Independent Clocks(RDCLK,WRCLK)Block RAM”。寫(xiě)入位寬設(shè)置為8位,讀出位寬設(shè)置為8 位,F(xiàn)IFO 深度設(shè)置為8 192 字節(jié),和外置芯片大小一致。生成的FIFO 核完全具備外置FIFO的功能。
編寫(xiě)測(cè)試文件對(duì)FIFO 核進(jìn)行測(cè)試,首先對(duì)FIFO進(jìn)行寫(xiě)操作,然后對(duì)FIFO 進(jìn)行讀操作。寫(xiě)入時(shí)判斷是否寫(xiě)滿,讀出時(shí)判斷是否讀空。圖6為對(duì)FIFO核寫(xiě)入測(cè)試數(shù)據(jù),從圖6中可以看出,在寫(xiě)使能信號(hào)wrreq高電平有效后,在寫(xiě)時(shí)鐘上升沿,將data 寫(xiě)入到fifo中,fifo 中逐漸寫(xiě)入了1、2、…、16,并且計(jì)數(shù)器wrdatacount滯后于寫(xiě)入數(shù)據(jù)一個(gè)周期,即本時(shí)鐘上升沿寫(xiě)入數(shù)據(jù)1,下一個(gè)時(shí)鐘上升沿wrdatacount變?yōu)?。fifo處于不滿狀態(tài)。
圖6 對(duì)FIFO核寫(xiě)入測(cè)試數(shù)據(jù)Fig.6 Write test data to FIFO IP core
圖7為對(duì)FIFO核讀出已存數(shù)據(jù)。從圖7中可以看到,在讀使能信號(hào)rdreq高電平有效后,在讀時(shí)鐘上升沿,從FIFO中依次讀出之前寫(xiě)入的1、2、…、16,且先寫(xiě)入1先讀出1,后寫(xiě)入16后讀出16。當(dāng)數(shù)據(jù)全部讀出后,rdempty變?yōu)楦?,表明FIFO處于讀空狀態(tài)。同時(shí)計(jì)數(shù)器rd_data_count 由16 變?yōu)?,且rd_data_count滯后于讀出數(shù)據(jù)一個(gè)周期,即本時(shí)鐘上升沿讀出一個(gè)數(shù)據(jù),下一個(gè)時(shí)鐘上升沿計(jì)數(shù)器自減一。
圖7 對(duì)FIFO核讀出已存數(shù)據(jù)Fig.7 Read the stored data from the FIFO IP core
基于圖1,對(duì)FIFO 建立模型后,針對(duì)原有的CPLD+FIFO 架構(gòu),使用FPGA 進(jìn)行替代。即采集板CPLD中Verilog代碼經(jīng)過(guò)適應(yīng)性修改移植到FPGA中,同時(shí)使用FPGA 的FIFO 核對(duì)外置FIFO 進(jìn)行建模??偩€驅(qū)動(dòng)芯片控制數(shù)據(jù)的流向,可使用Verilog程序進(jìn)行建模。最終,將各個(gè)元器件模型進(jìn)行互連后,數(shù)據(jù)采集模塊可抽象為ISE中一個(gè)工程。圖8為數(shù)據(jù)采集模塊的ISE工程,該模塊的輸入輸出信號(hào)如圖9所示。
圖8 數(shù)據(jù)采集模塊開(kāi)發(fā)工程Fig.8 The development project of the data acquisition board
圖9 數(shù)據(jù)采集模塊程序輸入輸出信號(hào)Fig.9 Input and output signals of the data acquisition board
數(shù)據(jù)采集模塊需接收控制系統(tǒng)三路異步RS422協(xié)議信號(hào),故調(diào)用3次異步串口數(shù)據(jù)接收模塊uart.v和3次FIFO 核。頂層模塊XDP.v 接收三路異步RS422 協(xié)議信號(hào),在調(diào)用uart.v 后將外部串行數(shù)據(jù)轉(zhuǎn)化為并行數(shù)據(jù)并寫(xiě)入3個(gè)FIFO核中,在收到來(lái)自數(shù)據(jù)綜合板的讀使能信號(hào)read和地址信號(hào)addr后,在采集板時(shí)鐘作用下向數(shù)據(jù)綜合模塊輸出并行數(shù)據(jù)q。
基于數(shù)據(jù)綜合模塊模型和數(shù)據(jù)采集模塊模型,建立數(shù)字量變換器單機(jī)的整機(jī)電學(xué)模型,即對(duì)兩個(gè)模塊進(jìn)行聯(lián)合仿真。
在ISE中建立一個(gè)更頂層的工程,該工程應(yīng)包含原數(shù)據(jù)采集板和數(shù)據(jù)綜合板的工程,即原每個(gè)工程的頂層文件(XPC.v 和XDP.v)作為一個(gè)子模塊,在一個(gè)最頂層文件中被調(diào)用,以實(shí)現(xiàn)數(shù)據(jù)綜合模塊和數(shù)據(jù)采集模塊的聯(lián)合仿真。該設(shè)計(jì)思想不局限于數(shù)字量變換器單機(jī)內(nèi)的兩個(gè)模塊,可推廣至不同單機(jī)間多個(gè)模塊的聯(lián)合仿真。
基于圖4 和圖8 兩個(gè)模塊的聯(lián)合建模,即整機(jī)電學(xué)模型,是一個(gè)更頂層的工程,見(jiàn)圖10。XDP.v調(diào)用3 次FIFO 核 和3 次uart.v 文件,XPC.v 調(diào)用ROM 核,兩者和圖4、圖8 中的兩個(gè)工程相一致?;谶@兩個(gè)子工程以及XDP.v 和XPC.v,建立最頂層文件XPC_XDP_unity.v,在該文件中調(diào)用XPC.v 和XDP.v并進(jìn)行例化。須從兩個(gè)子模塊各自的輸入輸出信號(hào)中識(shí)別出聯(lián)合模型的輸入輸出信號(hào)。兩個(gè)子模塊之間的接口信號(hào)可設(shè)置為連線型變量wire,既非聯(lián)合模型的外部輸入信號(hào),亦非聯(lián)合模型的對(duì)外輸出信號(hào)。之后,針對(duì)最頂層文件XPC_XDP_unity.v編寫(xiě)測(cè)試文件XPC_XDP_unity_test.v對(duì)整個(gè)工程進(jìn)行仿真。
圖10 數(shù)據(jù)綜合模塊與數(shù)據(jù)采集模塊聯(lián)合仿真工程Fig.10 The co-simulation project of the data fusion board and the data acquisition board
通過(guò)以上流程可建立數(shù)字量變換器的RS422數(shù)據(jù)采集模塊和數(shù)據(jù)綜合模塊的聯(lián)合仿真模型。建立頂層工程和頂層工程的測(cè)試文件是一個(gè)非常繁瑣的過(guò)程。應(yīng)準(zhǔn)確識(shí)別聯(lián)合模型中所有外部信號(hào)和模塊間互連信號(hào),將所有對(duì)外信號(hào)分為輸入信號(hào)和輸出信號(hào),將所有輸入信號(hào)的波形準(zhǔn)確地寫(xiě)入測(cè)試文件中作為激勵(lì)源,觀察模型輸出是否和實(shí)際輸出一致。
在本聯(lián)合模型中,輸入信號(hào)包含兩個(gè)模塊各自的時(shí)鐘信號(hào),來(lái)自控制系統(tǒng)三路異步RS422 協(xié)議信號(hào)[1,7],來(lái)自中心程序器的幀同步信號(hào)和移位脈沖信號(hào)。輸出信號(hào)包含輸出給中心程序器的串行碼流data信號(hào)。而讀使能信號(hào)read、波道地址信號(hào)addr、并行數(shù)據(jù)q屬于模塊間互連信號(hào)。具體如圖11所示。將輸入信號(hào)寫(xiě)入測(cè)試文件中施加于聯(lián)合模型作為激勵(lì)源[8],得到聯(lián)合模型的輸出,見(jiàn)圖12。
圖11 聯(lián)合模型的輸入輸出信號(hào)和模塊間信號(hào)Fig.11 Input and output signals and internal signals of the combined model
其中,第1路RS422串行信號(hào)rxd1對(duì)應(yīng)的有效字節(jié) 為“11、12、13、14、15、16、17、18、19、1A”,第2 路RS422 串行信號(hào)rxd2 對(duì)應(yīng)的有效字節(jié)為“21、22、23、24、25、26、27、28、29、2A”,第3路RS422 串行信號(hào)rxd3 對(duì)應(yīng)的有效字節(jié)為“31、32、33、34、35、36、37、38、39、3A”。從fifo_d 和fifo_we 可看出這些并行數(shù)據(jù)分別被寫(xiě)入對(duì)應(yīng)的FIFO中。ef 信號(hào)是空指示信號(hào),是由表征FIFO 空指示信號(hào)fifo_empty生成的信號(hào),用于在從FIFO中讀數(shù)據(jù)而FIFO 為空時(shí)在碼流中插入連續(xù)3 個(gè)CC。圖中最開(kāi)始ef信號(hào)處于連續(xù)3個(gè)低電平狀態(tài),因?yàn)榈?次從FIFO中讀數(shù)時(shí)FIFO 處于空狀態(tài)。當(dāng)FIFO 不空時(shí),即從FIFO中讀取正常數(shù)據(jù)。結(jié)合fifo_out信號(hào)和ef信號(hào)有助于觀察bufferA 和bufferB,bufferA 和bufferB 是數(shù)據(jù)綜合板用于進(jìn)行乒乓操作的兩個(gè)寄存器,首字節(jié)為約定的FF,之后第1路異步信號(hào)被選中但此時(shí)第1路FIFO處于空狀態(tài)故連續(xù)出3個(gè)CC,然后FIFO處于非空狀態(tài)從其中讀出數(shù)據(jù)“11、12、13、14、15、16、17”,出夠7個(gè)后切換到第2路信號(hào)。第2路FIFO處于非空狀態(tài),從其中讀出10 個(gè)字節(jié)“21、22、23、24、25、26、27、28、29、2A”,之后切換到第3路信號(hào)。第3 路FIFO 處于非空狀態(tài),從其中讀出10 個(gè)字節(jié)“31、32、33、34、35、36、37、38、39、3A”。3 路數(shù)據(jù)的切換由地址信號(hào)addr確定,addr存儲(chǔ)波道信息,先讀10個(gè)字節(jié)第1路數(shù)據(jù),再讀10個(gè)字節(jié)第2路數(shù)據(jù),再讀10 個(gè)字節(jié)第3 路數(shù)據(jù)。data 是數(shù)據(jù)綜合板把bufferA 和bufferB 的并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)后向后級(jí)設(shè)備輸出的碼流信號(hào)。結(jié)合data 信號(hào)和shift 信號(hào),可以看出,整機(jī)模型輸出端獲得了正確的串行碼流信號(hào),和bufferA和bufferB中存儲(chǔ)的字節(jié)一一對(duì)應(yīng)。
數(shù)據(jù)采集板將外部異步串口信號(hào)轉(zhuǎn)換成并行數(shù)據(jù)并將其存入FIFO中,數(shù)據(jù)綜合板從數(shù)據(jù)采集板讀取8位位寬的并行數(shù)據(jù)q。當(dāng)數(shù)據(jù)綜合板發(fā)送讀信號(hào)向FIFO 中讀數(shù)時(shí),F(xiàn)IFO 可能處于空狀態(tài),為了方便后級(jí)設(shè)備進(jìn)行數(shù)據(jù)處理,特在數(shù)據(jù)采集板中引入連續(xù)出3 個(gè)CC 的操作,即如果FIFO 為空,數(shù)據(jù)采集板向數(shù)據(jù)綜合板連續(xù)送3 個(gè)CC,直到FIFO 不空為止。因此冗余字節(jié)CC的個(gè)數(shù)一定為3的整數(shù)倍。與之相對(duì)應(yīng),后級(jí)設(shè)備如果檢測(cè)到連續(xù)3個(gè)CC,將直接去除之。
基于以上機(jī)制,在圖12中,在第1個(gè)讀信號(hào)低電平使能首字節(jié)送固定字節(jié)FF之后,地址為addr為0代表取第1路數(shù)據(jù),此時(shí)fifo1尚未寫(xiě)入數(shù)據(jù),處于空狀態(tài),所以在連續(xù)3 次讀信號(hào)read 取數(shù)時(shí),ef 信號(hào)均處于低電平狀態(tài),q 為連續(xù)3 個(gè)CC,送至bufferA 和bufferB 為連續(xù)3 個(gè)CC。當(dāng)?shù)? 次讀信號(hào)低電平使能時(shí),fifo1處于非空狀態(tài),故fifo1_out讀出已經(jīng)寫(xiě)入的第1個(gè)字節(jié)11,送至bufferB。
當(dāng)?shù)刂窞? 取第2 路數(shù)據(jù)時(shí),由于fifo2 已經(jīng)寫(xiě)入了足夠多的字節(jié)處于非空狀態(tài),故ef信號(hào)均處于高電平狀態(tài),fifo2_out順序讀出已經(jīng)寫(xiě)入的所有數(shù)據(jù)。當(dāng)?shù)刂窞?取第3路數(shù)據(jù)時(shí),亦然。
乒乓操作是一種常用的用于數(shù)據(jù)流控制的設(shè)計(jì)思想[9],典型的乒乓操作方法如圖13所示。
圖13 乒乓操作流程Fig.13 Flow chart of ping-pong operation
乒乓操作的流程為:輸入數(shù)據(jù)流通過(guò)“輸入數(shù)據(jù)選擇單元”將數(shù)據(jù)流等時(shí)分配到兩個(gè)數(shù)據(jù)緩沖模塊中,此處為兩個(gè)8位位寬的寄存器bufferA和bufferB,運(yùn)算處理模塊主要用于完成并串轉(zhuǎn)換。乒乓操作仿真結(jié)果見(jiàn)圖14。第1 個(gè)緩沖周期即讀信號(hào)低電平期間,將輸入數(shù)據(jù)CC緩存到bufferA。第2個(gè)緩沖周期,flag信號(hào)由高變?yōu)榈?,通過(guò)flag信號(hào)的切換,將輸入的數(shù)據(jù)11緩存到bufferB,同時(shí)將bufferA緩存的上個(gè)周期數(shù)據(jù)CC 進(jìn)行并串轉(zhuǎn)換為“11001100”。第3 個(gè)緩沖周期通過(guò)flag 信號(hào)的再次切換,將輸入數(shù)據(jù)12 緩存到bufferA 中,同時(shí)將bufferB 中緩存的上個(gè)周期數(shù)據(jù)11進(jìn)行并串轉(zhuǎn)換為“00010001”。依次循環(huán)下去,以上流程可以從圖14中得以驗(yàn)證。
圖14 乒乓操作時(shí)序圖Fig.14 Timing sequence diagram of ping-pong operation
接口信號(hào)時(shí)序設(shè)計(jì)適用于各不同模塊間接口信號(hào)的數(shù)據(jù)交互過(guò)程。接口信號(hào)時(shí)序設(shè)計(jì)是否正確直接影響產(chǎn)品功能和性能是否足夠正確和穩(wěn)定。
基于前文,數(shù)據(jù)綜合模塊與數(shù)據(jù)采集模塊間的接口信號(hào)包含3種:數(shù)據(jù)綜合模塊向數(shù)據(jù)采集模塊傳遞地址信號(hào)addr,讀使能信號(hào)read,數(shù)據(jù)采集模塊向數(shù)據(jù)綜合模塊傳輸并行數(shù)據(jù)q。在綜合板通過(guò)read 信號(hào)向采集板采集數(shù)據(jù)的時(shí)刻,采集板對(duì)綜合板提供的并行數(shù)據(jù)需穩(wěn)定、無(wú)跳變[10-11]。
在圖10的ISE工程中,針對(duì)數(shù)據(jù)綜合模塊與數(shù)據(jù)采集模塊的接口信號(hào)時(shí)序進(jìn)行仿真。將所有輸入信號(hào)的波形準(zhǔn)確地寫(xiě)入測(cè)試文件中作為激勵(lì)源,即可觀察到兩模塊間的接口信號(hào)時(shí)序仿真結(jié)果。其中,clk1為數(shù)據(jù)綜合板時(shí)鐘信號(hào),shift為數(shù)據(jù)綜合板的移位脈沖信號(hào),clk2為數(shù)據(jù)采集板時(shí)鐘信號(hào),rd為數(shù)據(jù)綜合板read經(jīng)clk2同步化后的讀使能信號(hào)。數(shù)據(jù)綜合板時(shí)鐘clk1和數(shù)據(jù)采集板時(shí)鐘clk2屬于非相干時(shí)鐘,標(biāo)稱頻率相同,考慮數(shù)據(jù)采集板同步化rd信號(hào)相對(duì)于數(shù)據(jù)綜合板read信號(hào)延遲的最大值和最小值,分別取兩時(shí)鐘相位差為0°和180°的情況進(jìn)行仿真,具體見(jiàn)圖15 和圖16。
圖15 兩個(gè)模塊接口信號(hào)時(shí)序仿真結(jié)果(時(shí)鐘同相)Fig.15 Simulation results of interface signal timing between the two boards(same phase)
圖16 兩個(gè)模塊接口信號(hào)時(shí)序仿真結(jié)果(時(shí)鐘反相)Fig.16 Simulation results of interface signal timing between the two boards(opposite phase)
從圖15 中可以看到,讀使能信號(hào)read 低電平持續(xù)時(shí)間為兩個(gè)移位脈沖周期(30 個(gè)clk1 周期),bufferA 和bufferB 用于實(shí)現(xiàn)乒乓緩存,在讀信號(hào)低電平的中間時(shí)刻采集板q 被賦值給bufferA 和bufferB,此圖中被賦值給bufferB。另外,q 穩(wěn)定時(shí)刻距離read信號(hào)下降沿約為6個(gè)時(shí)鐘周期,考慮到數(shù)據(jù)采集板和數(shù)據(jù)綜合板間信號(hào)經(jīng)過(guò)屜間連接器、信號(hào)驅(qū)動(dòng)芯片等的固有延遲時(shí)間大約為1個(gè)時(shí)鐘周期,故在綜合板通過(guò)read信號(hào)向采集板采集數(shù)據(jù)的時(shí)刻,采集板提供的并行數(shù)據(jù)是穩(wěn)定的。
同理,從圖16中可以看到,q穩(wěn)定時(shí)刻距離read信號(hào)下降沿約為5.5個(gè)時(shí)鐘周期,同樣考慮數(shù)據(jù)采集板和數(shù)據(jù)綜合板間信號(hào)經(jīng)過(guò)屜間連接器、信號(hào)驅(qū)動(dòng)芯片等的固有延遲時(shí)間,可得在綜合板通過(guò)read信號(hào)向采集板采集數(shù)據(jù)的時(shí)刻,采集板提供的并行數(shù)據(jù)是穩(wěn)定的。
綜上所述,在數(shù)據(jù)綜合板和數(shù)據(jù)采集板時(shí)鐘存在隨機(jī)相位差的情況下,采集板對(duì)綜合板提供的并行數(shù)據(jù)穩(wěn)定、無(wú)跳變。
過(guò)去十余年,測(cè)量系統(tǒng)數(shù)字量變換器只針對(duì)數(shù)據(jù)采集模塊或數(shù)據(jù)綜合模塊中可編程邏輯器件CPLD中的Verilog程序進(jìn)行仿真,未能對(duì)模塊中其他關(guān)鍵元器件建立模型,未能建立模塊模型和整機(jī)模型。
數(shù)字量變換器的聯(lián)合仿真研究首次攻克了該難題,建立其中關(guān)鍵元器件的電學(xué)模型,進(jìn)而對(duì)元器件模型互連建立每個(gè)模塊電學(xué)模型,最后對(duì)模塊模型互連建立整機(jī)電學(xué)模型,對(duì)于每個(gè)器件、每個(gè)模塊、整機(jī)的工程實(shí)現(xiàn)進(jìn)行了充分的驗(yàn)證、迭代、優(yōu)化,對(duì)于不同模塊間協(xié)同工作實(shí)現(xiàn)整機(jī)功能進(jìn)行了充分、直觀、深入的演示。針對(duì)模塊間接口信號(hào)的仿真工作,直接揭露了接口信號(hào)的時(shí)序關(guān)系,將該設(shè)計(jì)要素通過(guò)仿真軟件得以直接顯示,并檢查、驗(yàn)證接口信號(hào)的時(shí)序關(guān)系是否能夠滿足模塊間的數(shù)據(jù)交互需求,顯著增強(qiáng)了軟件的健壯性。
綜上所述,通過(guò)本文的仿真研究工作,設(shè)計(jì)師在實(shí)物調(diào)試之前即可在仿真軟件中對(duì)模塊、整機(jī)功能和性能進(jìn)行仿真、驗(yàn)證,從根本上提升了產(chǎn)品的可靠性。
以上思路和方法目前已總結(jié)形成標(biāo)準(zhǔn),用于指導(dǎo)同類產(chǎn)品和測(cè)量系統(tǒng)其他類似產(chǎn)品的建模與仿真工作。相信在未來(lái),建模與仿真將在產(chǎn)品設(shè)計(jì)、驗(yàn)證、優(yōu)化等工作中發(fā)揮更大的作用。
導(dǎo)彈與航天運(yùn)載技術(shù)2023年3期