国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

用于像素陣列掃描控制的低功耗RISCV 處理器

2022-06-29 06:08徐德利
電子設(shè)計工程 2022年12期
關(guān)鍵詞:寄存器內(nèi)核時鐘

方 倪,徐德利,王 東,沈 凡,龔 祺

(華中師范大學物理科學與技術(shù)學院像素實驗室,湖北武漢 430079)

隨著集成電路技術(shù)的快速發(fā)展,復(fù)雜電路的集成變得可行。高能物理實驗中依托于CMOS 像素傳感器,像素傳感器最重要的指標之一就是像素分辨率,提高像素分辨率可增加高能物理中發(fā)現(xiàn)新粒子的概率,因此大陣列CMOS 像素傳感器具有極其重要的應(yīng)用價值[1]。目前國內(nèi)對于大陣列的拼接主要利用精密壓電陶瓷電機完成探測器位置調(diào)整,并通過激光測距儀測量以及計算機平面擬合來確定探測器的空間位置,進而實現(xiàn)大規(guī)模非連續(xù)CMOS 焦平面陣列的機械式拼接[2-3]。大陣列的讀出結(jié)構(gòu)主要采用Global shutter[4]、rolling shutter[5]、AERD (Address Encode and Reset Decode)[6]等方式。利用機械方式的拼接可以解決大陣列問題,但是同時也會帶來外部連接的問題,陣列讀出方式的選擇也是該類芯片需要研究的關(guān)鍵問題。文中設(shè)計利用開源的RISCV 處理器構(gòu)建一個可重構(gòu)的數(shù)字讀出系統(tǒng)來克服這些問題,通過外部的配置進行讀出方式的選擇,通過外部接口的設(shè)計進行多處理器之間的級聯(lián),實現(xiàn)大陣列像素的讀出,提高了系統(tǒng)兼容性。

1 系統(tǒng)結(jié)構(gòu)

像素陣列掃描控制器主要由3 個部分構(gòu)成:核心模塊、通信接口和像素掃描陣列;核心模塊搭載國內(nèi)開源的RISCV 內(nèi)核,主要任務(wù)是協(xié)調(diào)各個模塊之間正常運轉(zhuǎn);通信接口主要采用JTAG 接口,利用JTAG 既可以完成核的燒錄也可以形成菊花鏈結(jié)構(gòu)級聯(lián)多核;像素掃描陣列實現(xiàn)常用的掃描方式及Global shutter &rolling shutter,能夠?qū)崿F(xiàn)兩個模式的切換、更改掃描的分辨率以及針對某一指定區(qū)域進行掃描。像素陣列掃描控制器的結(jié)構(gòu)示意圖如圖1所示。

圖1 像素陣列掃描控制器的結(jié)構(gòu)示意圖

2 系統(tǒng)各個模塊的設(shè)計

2.1 開源RISCV內(nèi)核

RISCV 架構(gòu)主要由美國加州大學伯克利分校于2010年發(fā)明[7]。文中設(shè)計的內(nèi)核基于國內(nèi)開源RISCV處理器——蜂鳥E203[8],內(nèi)核設(shè)計遵循模塊化的原則,將處理器劃分成4個主體模塊單元,分別為系統(tǒng)存儲、外設(shè)部分、程序Debug 燒錄部分以及處理器core。系統(tǒng)存儲主要分為ITCM(Instruction Tightly Coulped Memory)、DTCM(Data Tightly Coulped Memory)以及通過QSPI 接口外接其他片外存儲;外設(shè)部分主要包含了IIC、SPI、UART、GPIO、PWM 和Watch Dog;程序Debug 燒錄部分主要通過JTAG 進行實現(xiàn);處理器core 為處理器核的所有邏輯部分。處理器的內(nèi)部模塊層次劃分如圖2 所示。

圖2 處理器的模塊層次劃分

內(nèi)核采用RV32IMAC 架構(gòu),支持32 位通用指令集,兼容16 位壓縮指令集以及多周期硬件乘除法單元。RISCV 指令集如表1 所示(僅展示該設(shè)計用到的指令集)。原蜂鳥E203 處理器采用深度二級流水線設(shè)計,處理器中采用流水線的作用是提升系統(tǒng)整體的運行速度,流水線的本質(zhì)就是利用面積換取系統(tǒng)性能。微處理器性能的決定因素根據(jù)下式[9]體現(xiàn):

表1 RISCV指令集

處理器時鐘頻率主要根據(jù)時序電路之間的最大組合邏輯延時得到,流水線是將單周期長的組合邏輯的操作分成多個組合邏輯實現(xiàn),計算組合邏輯中最大的延時就是當前處理器的時鐘頻率,由此可以減少時序電路之間的組合邏輯,但帶來了寄存器數(shù)量的增加,也就是使用D 觸發(fā)器的數(shù)量變多,從而導致系統(tǒng)的面積隨之增加。文中設(shè)計綜合考慮面積和性能,選擇經(jīng)典五級流水線的結(jié)構(gòu),將取值(IFU)、譯碼(ID)、執(zhí)行(EXU)、訪存(MEM)、寫回(WB)各自作為一級,其流水線結(jié)構(gòu)如圖3 所示。

圖3 處理器流水線結(jié)構(gòu)

對于處理器而言,不僅僅需要關(guān)注性能,還需要關(guān)注整體的功耗,該處理器低功耗[10]的設(shè)計主要從以下兩個方面進行考慮:第一,采用不同的時鐘域,速度要求不高的模塊放在低時鐘域下,以低功耗運行,該處理器分為3 個時鐘域,具體如表2 所示;第二,內(nèi)部單元配備獨立的門控時鐘(Clock Gate)[11],當該模塊或者單元空閑時,使用門控時鐘的合理關(guān)斷來節(jié)省動態(tài)功耗[12]。

表2 處理器的時鐘域

2.2 通信接口設(shè)計

通信接口用于實現(xiàn)處理器程序的更新以及多核之間的連接,采用的是JTAG 接口,開源蜂鳥E203 內(nèi)部采用JTAG 接口進行程序燒錄,利用JTAG 支持菊花鏈[13]的連接模式,從而可以拓展成多核之間的連接。JTAG 接口內(nèi)部主要由TAP(狀態(tài)控制器)、數(shù)據(jù)寄存器、指令寄存器、旁路寄存器以及移位寄存器五部分構(gòu)成。文中設(shè)計采用標準四線接口:TMS(測試模式選擇)、TCK(測試時鐘輸入)、TDI(測試數(shù)據(jù)輸入)、TDO(測試數(shù)據(jù)輸出)[14]。時鐘通過TCK 引腳輸入,驅(qū)動內(nèi)部時序邏輯運轉(zhuǎn),通過時鐘的上升沿采集TMS 的信號變化,從而改變內(nèi)部TAP 狀態(tài)機的變化。測試數(shù)據(jù)從TDI 引腳輸入,輸入的是指令和數(shù)據(jù),最終通過移位寄存器將數(shù)據(jù)通過TDO 引腳輸出。JTAG 內(nèi)部TAP 狀態(tài)轉(zhuǎn)移圖如圖4 所示。JTAG接口不僅實現(xiàn)對處理器的程序燒錄和Debug 操作,還可以起到多核之間的連接作用,采用菊花鏈的連接模式,通過JTAG 的內(nèi)部Bypass 透傳指令將前一級的數(shù)據(jù)直接送入到下一級,形成多核之間首尾相接的形式。JTAG 的菊花鏈連接結(jié)構(gòu)如圖5 所示。

圖4 TAP狀態(tài)轉(zhuǎn)移圖

圖5 菊花鏈連接結(jié)構(gòu)

2.3 像素掃描接口設(shè)計

對像素探測器而言,能夠正確有效地得到當前粒子的信息是比較關(guān)鍵的,這就需要依托于設(shè)計中的讀出系統(tǒng)是否設(shè)計合理,目前相機常見的陣列掃描采用的是Global shutter&rolling shutter方式[15]。傳統(tǒng)方法通過數(shù)字流程設(shè)計制作出某一種讀出方式,然后集成到像素芯片上,這樣就固定了掃描方式,不利于芯片后期的測試以及修改。為了能夠兼容多種讀出方式,給處理器增加了一個像素掃描外設(shè)模塊,該模塊接口管腳的定義如圖6 所示。該模塊主要實現(xiàn)了3種功能:第一,實現(xiàn)Global shutter&rolling shutter,并且可以實現(xiàn)兩種模式的切換;第二,實現(xiàn)Global shutter &rolling shutter 模式之間對于像素分辨率的切換;第三,實現(xiàn)Global shutter &rolling shutter 模式下對指定像素區(qū)域進行掃描。

圖6 像素接口設(shè)計

3 設(shè)計結(jié)果

文中處理器開發(fā)的軟件平臺采用Ubuntu16.04系統(tǒng),硬件開發(fā)語言采用Verilog HDL,硬件平臺選用Xilinx Artix-35T FPGA 開發(fā)板[16],仿真測試工具采用Vivado 以及VCS 軟件。

整個驗證過程主要分為以下兩個步驟:首先對處理器、像素掃描模塊以及JTAG 多核級聯(lián)等模塊進行功能仿真,查看仿真波形結(jié)果與理論結(jié)果是否一致;第二步將整體模塊通過Vivado 工具編譯綜合,將生成的.bit文件燒錄到FPGA 開發(fā)板中進行硬件測試。

首先對每個模塊進行前期功能驗證,主要通過編寫testbench輸入正確的激勵得到輸出波形,最后比較結(jié)果的正確性。處理器的仿真激勵通過對內(nèi)部的ITCM進行寫操作,將需要測試的指令通過編譯器轉(zhuǎn)換成機械碼相當于對ITCM的某些地址寫入對應(yīng)的數(shù)據(jù)。

測試的指令為ADD 指令,通過編譯器將編寫好的C 代碼轉(zhuǎn)化成ROM 可讀的機器碼文件,如測試仿真代碼中的rv32ui-p-addi.verilog 文件,使用Verilog的readmemh 函數(shù)讀入文件,初始化ITCM,由Verilog編寫的二維數(shù)組充當行為模型。最終測試結(jié)果如圖7 所示。從仿真結(jié)果中可以看出,寫入到ITCM 中的數(shù)據(jù)與最終對ITCM 進行讀出的數(shù)據(jù)是一致的,最終數(shù)據(jù)正確后寫回寄存器X3,X3 為“1”則通過仿真檢驗,最終打印出PASS 結(jié)果;否則測試結(jié)果有誤,打印出Fail字樣。

圖7 處理器仿真測試結(jié)果

測試文件中ITCM 寄存器地址為0x00,需要寫入的數(shù)據(jù)為16′h3405107 30001AA0D,通過仿真控制模塊內(nèi)核查看ITCM 的信號結(jié)果,指令地址addr=0000 的數(shù)據(jù)dout 為34051073_0001AA 0D,符合最終的設(shè)計結(jié)果。

為了進一步驗證該處理器的可行性,進行FPGA原型驗證。將模塊通過Vivado 工具進行編譯綜合,生成bitstream 文件,利用開發(fā)板進行硬件驗證。通過JTAG 調(diào)試器將數(shù)據(jù)送入開發(fā)板的Memory 中,然后利用GCC工具鏈對寫好的C程序進行編譯,將編譯好的程序下載到開發(fā)板中,通過串口看出最終的輸出結(jié)果。以經(jīng)典的“Hello world”程序為例,對于編寫好的C程序,為了更直觀地看到其結(jié)果,在C中調(diào)用串口。以PC端為接收器,配置好對應(yīng)串口ttyUSB2 以及波特率115 200 bit/s。通過PC 端調(diào)用串口指定顯示當前串口號下的信息,最終的運行結(jié)果如圖8所示[17]。

圖8 硬件測試結(jié)果

目前該系統(tǒng)已經(jīng)設(shè)計完成,正準備進行流片工作,前期針對RISCV 內(nèi)核進行了一次流片,采用的是商用130 nm CMOS 工藝,主要修改內(nèi)容是將內(nèi)部的IP 替換成工廠提供的IP 核。

將芯片進行綁定測試,鍵合到印制電路板(PCB),焊接后進行測試,測試平臺如圖9 所示。芯片的外部輸入由FPGA 板提供,通過查看信號源以及Vivado硬件仿真波形驗證芯片功能。

圖9 芯片測試平臺

4 結(jié)論

文中提出了一種可重構(gòu)的數(shù)字讀出系統(tǒng),主要應(yīng)用于高能物理像素探測器中,該系統(tǒng)能夠兼容多種像素讀出方式,并且通過外部接口進行多核連接和多核之間的通信。該內(nèi)核已經(jīng)采用商用130 nm CMOS 工藝設(shè)計完成,處理器在40 MHz 的頻率下靜態(tài)功耗為5.221 2 mW,動態(tài)功耗為53.024 9 mW。

猜你喜歡
寄存器內(nèi)核時鐘
人民情懷:柳青為文為人的內(nèi)核(評論)
活化非遺文化 承啟設(shè)計內(nèi)核
古代的時鐘
微軟發(fā)布新Edge瀏覽器預(yù)覽版下載換裝Chrome內(nèi)核
這個時鐘一根針
飛思卡爾單片機脈寬調(diào)制模塊用法研究
移位寄存器及算術(shù)運算應(yīng)用
數(shù)字電路環(huán)境下汽車控制電路信號設(shè)計
有趣的時鐘
時鐘會開“花”