999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種1750A指令集仿真軟核設計與驗證

2022-06-01 13:17:46李士剛祝周榮
計算機測量與控制 2022年5期
關鍵詞:指令程序模型

李士剛,祝周榮

(海裝駐上海地區第六軍事代表室,上海 201109)

0 引言

國產P1750A的研制成功并大量投入使用,規避了1750芯片完全依賴進口的風險,使得MIL-STD-1750A指令集已經成為我國星載彈載計算機常用指令集之一,它提供多種數據類型,包括16位、32位整數和32位、48位浮點數,以及直接尋址、間接尋址、立即尋址、短變址、長變址尋址等十三種尋址方式,指令類型有130種。

通常星載彈載計算機的結構是CPU+FPGA結合的方式來控制各個存儲模塊和IO模塊,如看門狗電路、存儲器控制功能(包括EDAC)、總線接口芯片控制電路等。CPU軟件和FPGA產品都有程序的概念,都要進行專門的驗證和測試,現有的測試方式通常是將CPU軟件和FPGA產品分開測試,CPU軟件在硬件平臺上進行測試,而FPGA產品只能通過仿真器對CPU時序的讀寫IO時序和讀寫SRAM時序進行單一模擬,但是實際CPU時序會根據各種指令集產生不同時序和不同時序組合,因此現有測試方法僅能滿足簡單測試用例的實施,缺少通用性,時序產生的隨意性和主觀性較強,不能真正反映實際CPU時序的運行情況,從而導致FPGA內部設計隱患無法發現。因此需要有一種測試方法,既能實現實際意義上CPU時序的組合,又能進行某些安全性、強度、單粒子翻轉等異常測試激勵故障注入,從而實現軟硬件聯合仿真,并完全滿足測試覆蓋率要求。

本文提出一種CPU+FPGA的仿真模型搭建方法,設計了一種精簡1750仿真軟核,實現了基于1750A指令集架構微處理器仿真軟核和FPGA軟硬件聯合仿真驗證方法。該精簡1750仿真軟核能在執行星載彈載CPU程序的過程中,恰當產生該微處理器各引腳輸出信號、并根據該微處理器各引腳輸入信號(如中斷等)激發程序正確執行相應的響應處理程序,實現真正意義上的軟硬件聯合仿真。

1 通用仿真模型搭建框架

該通用仿真模型參照硬件實際情況進行構建,同時還應建立PROM的仿真驗證模型和CAN總線控制器的仿真驗證模型,就像搭建一臺單機一樣,將FPGA和CPU仿真軟核的各個信號按照硬件接口圖或者原理圖的連接方式進行連接,實現數字化的仿真驗證平臺,如圖1所示。模擬整個硬件環境,主要驗證整個軟硬件系統包括FPGA產品和CPU軟件的實現功能,相當于對裝有正式CPU軟件的單機進行測試,從而保證整個系統功能的正確性。驗證人員需要將CPU軟件轉換為二進制執行代碼,載入到PROM中運行。

測試內容不僅包括通常的應用功能,如接口模塊的控制和應用層協議幀的驗證。更重要的是還可以進行空間寄存器單粒子翻轉、空間狀態機單粒子翻轉、中斷信號異常等在硬件上無法 模擬的故障安全性驗證等測試。此外,由于仿真模型可以記錄下內總線的所有操作記錄,因此可以對操作記錄進行分析,并將該操作記錄和PROM中的程序指令地址中的指令數據進行比對,從而可以得到目標碼覆蓋率結果。

利用該通用仿真模型進行軟硬件協同仿真驗證不僅可以進行RTL級仿真驗證(前仿),還可以進行動態時序仿真驗證(后仿),將不同溫度和電壓工況下的FPGA的電路延時放入仿真中進行執行運算,與真實系統更為接近,對各接口的時序測試更為精準。

如圖1所示,基于1750A指令集軟核的FPGA第三方驗證通用激勵模型包括起主動控制作用的MIL-STD-1750A指令集架構微處理器軟核、提供系統時鐘和復位電路等仿真輸入模塊、用于仲裁總線控制的CAN總線控制器仿真模塊、系統正常信號監控仿真測試模塊、存儲數據的SRAM存儲仿真模塊和用于抗單粒子翻轉EDAC仿真測試模塊、中斷濾波仿真測試模塊、用于調試的RS422串口協議仿真測試模塊和用于存放二進制碼星載程序的PROM存儲仿真。顯而易見,精簡1750仿真軟核在該仿真激勵模型中起了至關重要的作用,其功能包括:能夠依據MIL-STD-1750A指令集架構規范完成指令功能,能夠執行P1750A典型應用系統的工作流程,能夠進行多種典型的故障注入和相應調試,能夠進行內部寄存器和外部存儲器的任意單粒子翻轉場景設置,能夠通過用戶界面程序進行的配置和調試操作。

圖1 基于1750A指令集軟核的FPGA第三方驗證通用激勵模型

2 仿真軟核內部體系結構

該仿真軟核參照P1750A芯片,使用32位內總線結構,由3部分總線構成,如圖2所示,連接一個24 bitx24 bit的乘法器(Multiplier)、一個32位的運算器(ALU)、一個32位移位網絡(shift network)、一個多端口寄存器文件控制器(Registerfile)、一個狀態記錄模塊(Flags)和一個地址計算單元(Address generator),此外,還內置了一個時序生成模塊(Sequencer)、一個外圍IO設備控制模塊(IO control)和一個存放微指令代碼的ROM(Microcode ROM)。其中,Sequencer內部主要是一個狀態機,由系統晶振控制時鐘產生處理器時序和控制信號。Microcode ROM是一個可存放1 408個64 bit字的小ROM,可用于存儲初始程序、中斷響應、總線響應、指令預取和自測試程序等。

圖2 精簡1750A仿真軟核的內部體系結構

3 關鍵技術及設計方法

3.1 中斷處理設計

中斷處理的完整流程如圖3所示,其過程概括起來可分為鎖存、檢測、跳轉和返回四大步驟。以下將逐一闡述各個步驟的具體流程。

圖3 中斷處理過程

1)鎖存:

在不同的時間節點將各個信號在鎖存至中斷懸掛寄存器或故障寄存器,具體實現如表1所述。

表1 鎖存實現

2)檢測:

檢測中斷的時間節點主要為每條指令執行結束后、下一條指令開始執行前。此時檢測優先級判斷邏輯給出的中斷請求信號,若為有效則自動調轉至中斷處理服務微程序。由于1750A標準要求move等長指令在各個子周期間允許被打斷,所以對此條指令須單獨處理。不僅要在指令過程中檢測中斷的發生,還要在跳轉時將返回地址修改至當前move指令的地址。

3)跳轉:

跳轉進行了表2兩種情況處理方式設計。

表2 跳轉方式

4)返回:

中斷處理程序通常由LST指令返回。該指令會自動裝載跳轉前的處理器配置和狀態,將IC指向跳轉前的地址,并自動裝載指令流水線。根據1750A標準的要求,LST執行失敗會導致中斷不能返回,進而繼續執行下一條指令。CPU的默認行為與此相符,不需要特殊處理。

3.2 浮點運算單元

1750A指令集共定義了兩種格式的浮點數:普通浮點數(32位雙字)和擴展精度浮點數(48位三字),以及6種浮點數的操作類型,包括加減乘除以及和定點數的相互轉換。浮點運算單元依據FPU指令集中規定的運算方法對浮點數進行計算和處理,圖4描述了FPU運算邏輯的工作原理,送入FPU的操作數首先經過預規格化后根據不同的操作類型傳送給對應的運算單元,由于加減法和乘除法對操作數的規格化要求不一致,故采用了獨立的規格化模塊。運算結果經規格化和舍入后輸出。浮點數的比較運算與定點數不同,無需經過實際的減操作,而直接由邏輯引腳給出比較結果。若操作數不合法或不符合指定的運算規則,FPU模塊會產生異常。這些異常大多由異常模塊給出,而除數為零的異常由除法運算器給出。

圖4 浮點運算單元模塊工作原理示意圖

圖4所述的浮點運算單元模塊包括加減法、乘法和除法運算功能,且各自獨立,不用的運算單元能夠關閉通道,從而提高仿真驗證效率。

3.3 故障注入機制設計

通過調研當前各型號的常見錯誤故障,實現如表3述類型的故障注入,進一步完善軟核的功能。

表3 故障注入實現類型

續表

在要進行故障注入的時刻點,先讀取要注入故障的寄存器和信號線當前結果,然后通過寫force強制語句強制寄存器和信號線為相反的結果,然后過1微秒后,釋放強制,從而實現故障注入。

3.4 圖形控制界面

為方便系統和用戶之間進行交互和信息交換,以圖形的方式提供一套軟核控制機制,提供軟核初始狀態設置、故障注入、內存管理、調試斷點設置、單步執行等功能,主要分為3個部分:頂層配置、內存管理和故障注入,如表4所述。

表4 圖形控制界面設計部分

4 仿真驗證和結果分析

4.1 仿真模型構建

項目組挑選了某衛星型號項目計算機CPU板FPGA和遙測采集FPGA進行仿真驗證,目前主流的仿真驗證方法一般分為2步:1)先是通過仿真器對CPU時序的讀寫IO時序和讀寫SRAM時序進行單一模擬先對計算機CPU板FPGA進行仿真驗證,無法運行真正的CPU程序,而且故障注入方式單一,不能真正反映實際CPU時序的運行情況,不能體現實際外部RAM的運行情況,因此無法發現計算機CPU板FPGA內部設計較深層次隱患;2)觀察計算機CPU板FPGA輸出時序,由于CPU時序的讀寫IO時序和讀寫SRAM時序本身就是模擬的,具有不確定性,因此對遙測采集FPGA的輸入激勵就存在錯誤的可能性,從而造成遙測采集FPGA測試的不確定。此外,這種主流仿真方法只能進行FPGA產品的語句、分支和狀態機覆蓋率,對更為關注條件覆蓋率和甚至是翻轉覆蓋率的測試無法達到測試要求。

利用該1750仿真軟核搭建仿真激勵模型將計算機CPU板FPGA和遙測采集FPGA聯合起來能夠很好的解決上述2個問題,既能實現實際意義上CPU時序組合的精準輸出,還能聯合構建2個FPGA同時進行仿真,從而實現系統級軟硬件聯合仿真,此外還能進行RAM運行情況測試、單粒子翻轉等異常測試激勵故障注入,實現正確的計算機CPU板FPGA和遙測采集FPGA仿真波形,最終滿足各種代碼測試覆蓋率要求。激勵模型頂層連線情況如圖5所示。

圖5 1750A、CPU板FPGA和遙控遙測FPGA連線

如圖5所示,該系統聯合仿真模型主要由1750A仿真軟核、CPU板FPGA和遙測采集FPGA三大模塊組成。其中1750A仿真軟核運行星載程序產生總線時序給CPU板FPGA。CPU板FPGA作為1750A仿真軟核和遙測采集FPGA的橋梁,進行總線時序轉換,此外,還完成圖1中通用激勵模型的功能。遙測采集FPGA實現該系統實際和外部硬件接口的遙控遙測指令控制。

激勵模型構建完成后,執行了一段RAM翻轉檢查的程序。該段程序通過my_printf()函數調用XIO命令向0x0100端口寫ASCII碼,prints ()函數用于構造錯誤信息字符串,程序主函數調用my_printf()輸出一個內容為“RAM TEST ”的字符串,標志著程序開始執行,然后將FIELD_BEGIN(0xD000)和FIELD_END(0xD05C)之間的一段RAM區域初始化為某個數值(0xF5A9),再將該區域內的值讀出并與期望值比較,若發現不同,則調用my_printf()打印類似“<>”字樣的出錯信息,接著,程序將該段被測區域的數值讀出后再寫回,以便利用FPGA的數據校驗功能修正可能發生的單粒子翻轉問題。最后,該程序嘗試向0x8030這個只讀區域寫入內容并檢查是否寫入。

4.2 RAM區域讀寫測試

啟動圖形界面,載入該測試文件程序編譯后結果并執行,在執行一段時間后暫停軟核,如圖6所述。此時切換到Memory標簽,如圖7所述,可以看到,程序正處于第一個循環,即初始化RAM的階段,此時0xD000至0xD05C之間的內存區域已經被正確初始化,而0xD05D至0xD0FF之間的區域還未進行初始化。

圖6 測試文件程序編譯暫停結果

圖7 RAM區域讀寫測試截圖

4.3 單粒子翻轉注入驗證

分別對0xD040和0xD048兩個單元做單粒子翻轉注入。其中0xD040單元翻轉4位,0xD048單元翻轉1位,如圖8左所示。單粒子翻轉注入完后,切換到Debug標簽并繼續執行,直到整個測試程序執行完畢,重新切換到Memory標簽中,檢查剛才注入單粒子翻轉的兩個內存區域。如圖8右所示,由于0xD048單元僅注入了一位翻轉,此時被內存校驗模塊自動檢測并更正;而0xD040單元,由于同時有4位發生翻轉,超出了可修復的最大翻轉位數,此單元并未得到修正。

圖8 單粒子翻轉測試截圖

4.4 仿真驗證波形分析

根據圖5仿真激勵模型,1750A仿真軟核和CPU板FPGA之間的接口時序測試結果如圖9所述,CPU板FPGA和遙控遙測FPGA之間的接口時序測試結果如圖10所示。該仿真模型可以很方便進行模塊間接口時序的測試。

圖9 1750和CPU板FPGA協同工作波形

圖10 CPU板FPGA和遙控遙測FPGA協同仿真波形

首先利用軟核通過XIO指令向0x0015、0x0016和0x0017三個端口寫入被測數據,并通過寫0x0019端口告知遙控遙測寫動作完畢。如圖11所示,四次寫操作分別引起了遙控遙測內部HA15、HA16、HA17和HA19依次產生4個低電平,對應時刻從數據線遙控遙測。SD可看到正在寫入的數據。此后,軟核進入等待循環,在該循環中等待遙控遙測將被測數據以串行方式寫出。如圖12,遙控遙測以ABCLK時鐘上升沿為同步信號,輸出測試用例所寫入的值,圖中四條縱向白線所隔開的3個波形段分別對應十六進制數1 234、5 678和90 AB的輸出。測試結果與期望結果相符,該項測試成功。

圖11 1750A操縱遙控遙測FPGA輸出波形

圖12 遙控遙測FPGA輸出波形

4.5 覆蓋率統計

圖13為仿真驗證執行覆蓋率總表,大部分功能模塊和接口的驗證覆蓋率都達到了80%及以上,總覆蓋率超過85%。其中Biu功能模塊的覆蓋率較低,原因是代碼中有一部分采用了宏定義,而VCS仿真無法正確識別這些宏定義,因此在覆蓋率總結中把其作為未覆蓋到的部分。

圖13 仿真驗證執行覆蓋率統計圖

4.6 效果比對

從測試結果可以看出,通過使用該1750A軟核,可以明顯提高FPGA代碼的條件覆蓋率和翻轉覆蓋率。在該測試中,執行了FIFO讀寫,編/解碼等測試,FPGA的翻轉覆蓋率由41%提高至87%。在測試效率提升方面,原為達到FPGA代碼91%的測試覆蓋率需人工操作4個工作日,利用該軟核后,可在七個小時內完成,測試效率大大提高。

5 結束語

本文提出了一種CPU+FPGA的仿真模型搭建方法。首先從通用仿真模型搭建框架入手,介紹了精簡1750仿真軟核的作用和地位,接著在建立了精簡1750仿真軟核內部體系結構的基礎上,對中斷處理機制的實現、浮點運算單元設計方式、故障注入機制設計以及圖形控制界面的實現等關鍵技術進行了闡述,最后搭建了較為完整的1750系列CPU+FPGA的仿真模型平臺并在項目中應用。實驗證明,利用該仿真模型平臺,可極大提高1750系列CPU相關接口的FPGA產品的驗證效率和可靠性。

猜你喜歡
指令程序模型
一半模型
聽我指令:大催眠術
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
3D打印中的模型分割與打包
主站蜘蛛池模板: 亚洲丝袜中文字幕| 国产av色站网站| 久久久久亚洲精品成人网| 久久精品丝袜| 亚洲精品第一页不卡| 欧美精品一区二区三区中文字幕| 免费看一级毛片波多结衣| 久精品色妇丰满人妻| 91网址在线播放| 99re在线视频观看| 国产情侣一区| 91精品专区| 国产日韩精品一区在线不卡| a毛片免费在线观看| 国产激爽大片高清在线观看| 一级毛片免费高清视频| 国内视频精品| 国产一区亚洲一区| 在线欧美一区| 成人免费午间影院在线观看| 囯产av无码片毛片一级| 久一在线视频| 亚洲美女一级毛片| 国产成人精彩在线视频50| 亚洲天堂视频网| 国产精女同一区二区三区久| 免费AV在线播放观看18禁强制| 亚洲一区二区视频在线观看| 无码高潮喷水专区久久| 日韩精品一区二区三区视频免费看| 亚洲Aⅴ无码专区在线观看q| www.日韩三级| 国产成人久久777777| 国产免费久久精品44| 亚洲日本中文字幕天堂网| 成人在线视频一区| 亚洲成a人片77777在线播放 | 国产麻豆精品久久一二三| 欧美有码在线| 中国成人在线视频| 人妻21p大胆| 精品国产中文一级毛片在线看| 精品国产福利在线| 这里只有精品国产| 亚洲黄色高清| 国产无人区一区二区三区| 亚洲中久无码永久在线观看软件 | 国产欧美一区二区三区视频在线观看| 青草视频网站在线观看| 久久伊人久久亚洲综合| 伊在人亚洲香蕉精品播放| 极品国产在线| 波多野结衣国产精品| 亚洲系列无码专区偷窥无码| 亚洲Aⅴ无码专区在线观看q| 国产精品所毛片视频| 国内熟女少妇一线天| 色婷婷国产精品视频| 成年看免费观看视频拍拍| 激情六月丁香婷婷四房播| 精品超清无码视频在线观看| 久久久久久久久久国产精品| 亚洲熟女中文字幕男人总站| 亚洲欧美日韩高清综合678| 91在线一9|永久视频在线| 亚国产欧美在线人成| 国语少妇高潮| 成人在线观看一区| 一级毛片无毒不卡直接观看| 一级做a爰片久久毛片毛片| 久久久久久久蜜桃| 丁香综合在线| 中文字幕无码中文字幕有码在线 | 欧美亚洲欧美| 国产原创自拍不卡第一页| 国产手机在线观看| 99999久久久久久亚洲| 亚洲午夜福利精品无码不卡| 狠狠综合久久| 久久夜色精品| 黄色污网站在线观看| 国产精品妖精视频|