亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        哈佛結(jié)構(gòu)模型機(jī)設(shè)計及FPGA實(shí)現(xiàn)

        2021-05-16 02:15:42向明尚
        關(guān)鍵詞:指令模型系統(tǒng)

        向明尚 張 強(qiáng)

        (東北石油大學(xué)計算機(jī)與信息技術(shù)學(xué)院, 黑龍江 大慶 163318)

        0 前言

        傳統(tǒng)的計算機(jī)體系結(jié)構(gòu)是指計算機(jī)的概念性結(jié)構(gòu),其作用是針對不同的層次分配軟硬件功能和確定軟硬件界面[1]。從存儲程序和數(shù)據(jù)的角度,可將其分為馮·諾依曼結(jié)構(gòu)和哈佛結(jié)構(gòu)。馮·諾依曼結(jié)構(gòu)也稱普林斯頓結(jié)構(gòu),是將指令存儲器和數(shù)據(jù)存儲器合并在一起。哈佛結(jié)構(gòu)是將指令存儲器和數(shù)據(jù)存儲器分開的一種并行存儲器結(jié)構(gòu)(見圖1),其中程序和數(shù)據(jù)存儲在不同的存儲器中,可分別編址獨(dú)立訪問。

        圖1 哈佛結(jié)構(gòu)示意圖

        模型機(jī)采用的是哈佛結(jié)構(gòu)設(shè)計指令和數(shù)據(jù)存儲器,指令存儲器用于保存系統(tǒng)和用戶程序,數(shù)據(jù)存儲器用于保存操作數(shù)據(jù)、計算結(jié)果以及作為數(shù)據(jù)的交換空間。計算機(jī)系統(tǒng)通常由運(yùn)算器、控制器、存儲器、輸入設(shè)備、輸出設(shè)備五大功能部件組成[2]。其中,運(yùn)算器用于算術(shù)邏輯運(yùn)算;控制器用于控制程序和數(shù)據(jù)的輸入、運(yùn)行以及計算結(jié)果的輸出;存儲器用于保存程序和數(shù)據(jù);輸入設(shè)備用于輸入程序和數(shù)據(jù);輸出設(shè)備用于輸出計算機(jī)系統(tǒng)的計算結(jié)果及運(yùn)行狀態(tài),通過顯示器等設(shè)備予以顯示。

        計算機(jī)系統(tǒng)中采用數(shù)字化信息來表示數(shù)值與其他各種類型的信息,采用邏輯代數(shù)作為硬件設(shè)計的基本數(shù)學(xué)工具[3]。硬件電路的實(shí)現(xiàn),可以通過現(xiàn)場可編程邏輯陣列(field-programmable gate array,F(xiàn)PGA)[4]和專用集成電路(application specific integrated circuit,ASIC)來完成[5]。ASIC通用性較差[6-8],因此本次研究采用FPGA實(shí)現(xiàn)哈佛結(jié)構(gòu)模型機(jī)的設(shè)計。

        1 功能模塊設(shè)計

        針對計算機(jī)系統(tǒng)中各功能模塊進(jìn)行層次設(shè)計[9],設(shè)計的首要原則是簡化原則。Dijkstra認(rèn)為,系統(tǒng)的層次結(jié)構(gòu)設(shè)計可以對系統(tǒng)驗(yàn)證和測試的簡化帶來巨大幫助[10]。完成各功能模塊設(shè)計后,將其按照邏輯關(guān)系分層組織集成,構(gòu)成模型機(jī)。采用自底向上的設(shè)計方法,依次設(shè)計ALU、程序存儲器、數(shù)據(jù)存儲器、譯碼器、累加器(Acc)、通用計數(shù)器(Ucnt)、程序計數(shù)器(PC)、堆棧計數(shù)器(SP)、時鐘系統(tǒng)、指令系統(tǒng)等功能模塊。驗(yàn)證后將各部件加入總線并予以測試,分層次組成不同的小系統(tǒng)。對小系統(tǒng)進(jìn)行全面測試,通過測試后依次封裝制作成系統(tǒng)模塊,即集成單元電路芯片。

        1.1 運(yùn)算器小系統(tǒng)設(shè)計

        運(yùn)算器小系統(tǒng)包括ALU、程序存儲器、數(shù)據(jù)存儲器等模塊。一般情況下,能用數(shù)字化形式表示的信息,就可以歸結(jié)為算術(shù)運(yùn)算或邏輯運(yùn)算類數(shù)據(jù)[11]。ALU是完成算術(shù)邏輯運(yùn)算的單元電路,其功能結(jié)構(gòu)如圖2所示。ALU是一個多輸入、多輸出函數(shù),表示為F=f(A,B,S)。其中,選擇碼用來確定2個運(yùn)算數(shù)應(yīng)該完成的運(yùn)算類型,總運(yùn)算數(shù)共有2k種。

        圖2 ALU功能結(jié)構(gòu)示意圖

        對于程序和數(shù)據(jù)存儲器,則應(yīng)用FPGA中的存儲器IP核進(jìn)行設(shè)計,并配以相應(yīng)的寄存器和存儲器配置文件。驗(yàn)證通過后,加入總線構(gòu)成一個運(yùn)算器小系統(tǒng)(見圖3),封裝成Arithmetic_system模塊。

        圖3 運(yùn)算器小系統(tǒng)原理圖

        1.2 計數(shù)器小系統(tǒng)設(shè)計

        計數(shù)器小系統(tǒng)包括累加器、通用計數(shù)器、程序計數(shù)器、堆棧計數(shù)器等模塊,以及添加封裝后的Arithmetic_system模塊和系統(tǒng)總線構(gòu)成Counter_System模塊,其工作原理如圖4所示。累加器是計算機(jī)系統(tǒng)中工作比較頻繁的功能部件,參與加減法、乘法、除法等多種運(yùn)算以及數(shù)據(jù)傳送,并具有判斷數(shù)據(jù)正負(fù)和是否為零的功能。

        圖4 計數(shù)器小系統(tǒng)工作原理圖

        程序計數(shù)器PC,作為地址計數(shù)器指向程序存儲器的一個存儲單元,用來保存下一條將要執(zhí)行的指令地址,并且具有計數(shù)值自動加1的功能。當(dāng)指令執(zhí)行時,首先根據(jù)PC中的地址,將一條指令由程序存儲器中取出并放入到指令寄存器中,完成“取指令”的操作,即完成計算機(jī)系統(tǒng)的“取指”、“譯碼”、“執(zhí)行”的第一個階段。第一條指令執(zhí)行完畢,PC計數(shù)值自動加1,然后準(zhǔn)備取出下一條指令,最后完成所有指令的執(zhí)行過程。

        堆棧計數(shù)器,作為堆棧指針指向數(shù)據(jù)存儲器的堆??臻g,采用后進(jìn)先出的棧結(jié)構(gòu),由堆棧指針指向棧頂,可完成數(shù)據(jù)的進(jìn)棧和出棧的操作。

        堆棧計數(shù)器,其初值即棧頂?shù)闹?,與計算機(jī)系統(tǒng)堆棧存儲區(qū)的大小有關(guān)。本系統(tǒng)的堆棧存儲器為8位數(shù)據(jù)存儲器,其數(shù)據(jù)線、地址線都是8位,共有256個字節(jié)存儲單元,存儲單元地址從 0 到 255。因此,堆棧計數(shù)器采用的是 8 位計數(shù)器,可尋址 256 個存儲單元。

        1.3 寄存器小系統(tǒng)設(shè)計

        寄存器是系統(tǒng)中的核心資源。為了節(jié)約芯片面積以降低成本,在保證功能和性能的基礎(chǔ)上減少了芯片數(shù)量,并從結(jié)構(gòu)上予以優(yōu)化。在封裝后的Counter_System模塊基礎(chǔ)上,分別添加指令寄存器、操作數(shù)寄存器、輸出結(jié)果寄存器和系統(tǒng)總線等,從而構(gòu)成寄存器小系統(tǒng)。寄存器小系統(tǒng)的工作原理如圖5所示。指令寄存器用于保存由PC作為地址取出來的指令,以備送往指令譯碼器進(jìn)行譯碼操作。其中,有2個操作數(shù)寄存器,用于保存參加算數(shù)邏輯運(yùn)算的2個操作數(shù);有1個輸出結(jié)果寄存器,用于保存算數(shù)邏輯運(yùn)算的結(jié)果。寄存器小系統(tǒng)封裝成Register_system模塊。

        圖5 寄存器小系統(tǒng)原理圖

        1.4 控制系統(tǒng)設(shè)計

        控制系統(tǒng)是模型機(jī)系統(tǒng)的核心,通過它才能使各個功能模塊組織起完整的計算機(jī)系統(tǒng),并根據(jù)指令系統(tǒng)的指令發(fā)出各種微操作指令,控制和完成各項(xiàng)系統(tǒng)工作。以Register_system模塊為基礎(chǔ),添加譯碼器、節(jié)拍發(fā)生器、控制矩陣等構(gòu)成一個控制系統(tǒng)。譯碼器在計算機(jī)中的系統(tǒng)應(yīng)用較多:指令譯碼器,用于區(qū)分指令的功能,根據(jù)指令編碼進(jìn)行譯碼,執(zhí)行指令相應(yīng)的功能;地址譯碼器,用來區(qū)分存儲器地址,尋找存儲單元;狀態(tài)譯碼器,用來區(qū)分設(shè)備的運(yùn)行狀態(tài)。譯碼器的設(shè)計與模型機(jī)的系統(tǒng)總線等有關(guān),如作為存儲器地址譯碼器,其輸入、輸出總線應(yīng)與存儲器地址相匹配。

        節(jié)拍發(fā)生器由環(huán)形計數(shù)器和控制電路組成。模型機(jī)中的各種功能部件,都是在時鐘信號的統(tǒng)一控制下按照設(shè)定順序進(jìn)行工作。為了協(xié)調(diào)各部件的工作,將時鐘信號轉(zhuǎn)換成機(jī)器節(jié)拍,使各部件按照節(jié)拍的順序有條不紊地工作。

        對于控制矩陣,需要根據(jù)計算機(jī)系統(tǒng)的體系結(jié)構(gòu)、指令系統(tǒng)、譯碼系統(tǒng)、節(jié)拍發(fā)生器以及各種功能部件的特性進(jìn)行綜合設(shè)計,通過原理圖和硬件描述語言相結(jié)合的方法來實(shí)現(xiàn)設(shè)計。

        1.5 輸入輸出系統(tǒng)設(shè)計

        輸入輸出系統(tǒng),其功能是控制模型機(jī)與外部數(shù)據(jù)的交換。輸入系統(tǒng)由輸入緩沖區(qū)計數(shù)器、緩沖區(qū)數(shù)據(jù)存儲器、緩沖區(qū)控制單元、頻率協(xié)調(diào)器等單元電路組成;輸出系統(tǒng)由液晶顯示器、七段數(shù)碼管、LED二極管、蜂鳴器等單元電路組成。在上述小系統(tǒng)和控制系統(tǒng)的基礎(chǔ)上,添加輸入輸出系統(tǒng)構(gòu)成模型機(jī)系統(tǒng)模塊Model_TOP,并以Alter DE0實(shí)驗(yàn)板為例添加I/O引腳配置和鎖相環(huán)單元電路,構(gòu)成完整的模型機(jī)系統(tǒng)。模型機(jī)的工作原理如圖6所示。

        圖6 模型機(jī)原理圖

        1.6 同步時鐘系統(tǒng)設(shè)計

        計算機(jī)系統(tǒng)是時鐘驅(qū)動的數(shù)字系統(tǒng),必須具備可靠穩(wěn)定的同步時鐘系統(tǒng)。對于同步時鐘系統(tǒng),一般采用壓控晶振(VCO) 頻率鎖相同步技術(shù)[12]和高精度晶振結(jié)合軟件修正分頻數(shù)同步技術(shù)[13]。本系統(tǒng)采用壓控晶振頻率鎖相同步技術(shù)進(jìn)行設(shè)計,系統(tǒng)的時鐘周期設(shè)計為50 ns。DEO開發(fā)板上帶有50 MHz的時鐘源,可產(chǎn)生的時鐘信號周期為20 ns,小于模型機(jī)的時鐘周期,無法滿足模型機(jī)的時鐘要求。因此,采用FPGA內(nèi)部的鎖相環(huán)PLL來處理時鐘信號,產(chǎn)生模型機(jī)所需的50 ns時鐘信號周期。

        2 指令系統(tǒng)設(shè)計

        指令系統(tǒng)是全部機(jī)器指令的集合,機(jī)器指令對應(yīng)的是機(jī)器語言,而機(jī)器語言是由一條條語句構(gòu)成,每一條語句又能準(zhǔn)確表達(dá)某種語義[2]。在指令系統(tǒng)的設(shè)計中,既要考慮到功能性和實(shí)用性,又要考慮到實(shí)現(xiàn)的可能性和可靠性。模型機(jī)指令系統(tǒng)基于RISC理論采用單地址格式設(shè)計,指令由操作碼和地址碼組成。表1所示為模型機(jī)部分指令。

        2.1 管理程序

        管理程序?qū)儆谧鳂I(yè)調(diào)度程序,采用指令系統(tǒng)的指令來編寫。它能通過指令存儲器配置文件直接提供給指令存儲器,在系統(tǒng)開機(jī)后自動執(zhí)行。管理系統(tǒng)可根據(jù)輸入緩存區(qū)的情況讀取用戶程序和數(shù)據(jù),將其分別保存到指令和數(shù)據(jù)存儲器中。當(dāng)用戶程序和數(shù)據(jù)輸入完畢后,自動調(diào)用并執(zhí)行用戶程序。管理程序清單如表2所示。指令存儲器配置文件如圖7所示。

        管理程序可通過JEMP指令判斷輸入緩沖區(qū)是否為空:如果為空,則循環(huán)等待;如果不空,則調(diào)用輸入子程序Input,將輸入緩沖區(qū)的用戶程序輸入到模型機(jī)的指令存儲器40號單元開始的存儲單元中,將用戶的數(shù)據(jù)輸入到模型機(jī)的數(shù)據(jù)存儲器中。JEND指令判斷用戶程序輸入完畢則調(diào)用用戶程序開始執(zhí)行。

        表1 模型機(jī)指令系統(tǒng)

        表2 管理程序清單

        圖7 指令存儲器配置文件結(jié)構(gòu)示意圖

        2.2 用戶程序

        用戶程序按照指令系統(tǒng)中的指令編寫。簡單的用戶程序,可以完成2個數(shù)的加法運(yùn)算。如,3+5=8,計算結(jié)果8被送到7段數(shù)碼管上顯示。程序中指令的含義是,數(shù)據(jù)3送到Acc,Acc送到數(shù)據(jù)RAM的1號單元,即第一個加數(shù)保存在數(shù)據(jù)RAM的1號單元;接下來數(shù)據(jù)5送到Acc,Add指令將Acc的內(nèi)容加上數(shù)據(jù)RAM的1號單元的內(nèi)容3,得到的和是8,再將數(shù)據(jù)8保存到數(shù)據(jù)RAM的2號單元,最后輸出數(shù)據(jù)RAM的2號單元的內(nèi)容,即輸出加法運(yùn)算的和。

        3 分析與驗(yàn)證

        3.1 仿真分析

        采用Verilog 語言編寫微程序進(jìn)行仿真測試。Verilog是硬件描述語言的一種,用于數(shù)字系統(tǒng)設(shè)計??捎盟M(jìn)行各種級別的邏輯設(shè)計,也可用它進(jìn)行數(shù)字邏輯系統(tǒng)的仿真驗(yàn)證、時序分析、邏輯綜合[14]。以運(yùn)算器小系統(tǒng)為例介紹仿真測試過程。

        首先,建立測試工程,其測試原理如圖8所示。

        圖8 運(yùn)算器小系統(tǒng)仿真測試原理圖

        其次,編寫微程序測試文件并執(zhí)行仿真,仿真波形如圖9所示,部分測試文件代碼如下。

        第一段代碼:

        #100 d=0;dataMAL=1;clk=1;

        #100 dataMAL=0;clk=0;

        #100 d=9;dataMDL=1;clk=1;

        #100 dataMDL=0;clk=0;

        #100 dataMW=1;clk=1;

        #100 dataMW=0;clk=0;

        #100 dataME=1; clk=1;

        #100 dataME=0; clk=0;

        ……

        在上述代碼段中,將數(shù)據(jù)9 寫入數(shù)據(jù)RAM的0號單元,對應(yīng)圖9中的1、2、3處。

        第二段代碼:

        #100 d=1;dataMAL=1; clk=1;

        #100 dataMAL=0;clk=0;

        #100 d=6;dataMDL=1; clk=1;

        #100 dataMDL=0;clk=0;

        #100 dataMW=1; clk=1;

        #100 dataMW=0;clk=0;

        #100 dataME=1; clk=1;

        #100 dataME=0; clk=0;

        ……

        上述代碼段,將數(shù)據(jù)6寫入數(shù)據(jù) RAM的1號單元,其執(zhí)行結(jié)果對應(yīng)于圖9中的4、5、6處。

        第三段代碼:

        #100 add=0;clk=1;#100 clk=0; add =0

        #100 d=0;dataMAL=1; clk=1;

        #100 dataMAL=0;clk=0;

        #100 dataME=1;clk=1;#100 clk=0;

        #100 aL=1;clk=1;

        #100 aL=0;dataME=0;clk=0;

        ……

        上述代碼段,將數(shù)據(jù)RAM的0號單元數(shù)據(jù)9輸出到總線,同時,ALU的數(shù)據(jù)寄存器鎖存數(shù)據(jù)9,其執(zhí)行結(jié)果對應(yīng)于圖9中的7、8處。

        第四段代碼:

        #100 d=1;dataMAL=1;clk=1;

        #100 dataMAL=0;clk=0;

        #100 dataME=1;clk=1;#100 clk=0;

        #100 bL=1;clk=1;

        #100 bL=0;dataME=0;clk=0;

        ……

        上述代碼段,將數(shù)據(jù)RAM的1號單元數(shù)據(jù)6輸出到總線,同時,ALU的數(shù)據(jù)寄存器鎖存數(shù)據(jù)6,其執(zhí)行結(jié)果對應(yīng)于圖9中的9、10的處。

        第五段代碼:

        #100 clk=1;addE=1;notE=0;orE=0;andE=0;

        #100 clk=0;addE=0;

        #100 clk=1;addE=0;notE=0;orE=0;andE=1;

        #100 clk=0;andE=0;

        #100 clk=1;addE=0;notE=0;orE=1;andE=0;

        #100 clk=0;orE=0;

        #100 clk=1;addE=0;notE=1;orE=0;andE=0;

        #100 clk=0;notE=0;

        ……

        上述代碼段輸出運(yùn)算器小系統(tǒng)的算數(shù)邏輯運(yùn)算和、與、或、非的結(jié)果:0f、00、0f、f6,其執(zhí)行結(jié)果對應(yīng)于圖9中的11、12、13、14處。

        圖9 運(yùn)算器小系統(tǒng)仿真波形圖

        3.2 下載驗(yàn)證

        按照圖6配置輸入輸出引腳,將工程與開發(fā)板聯(lián)系起來,編譯工程生成開發(fā)板編程文件Model_TOP.pof,利用開發(fā)板的JTAG接口下載到開發(fā)板的Flash 中保存,開機(jī)后即可自動執(zhí)行模型機(jī)系統(tǒng)。通過開發(fā)板上的按鍵,依次輸入用戶程序代碼:06,03,05,01,06,05,01,01,05,02,02,02,F(xiàn)1。錄入完畢按下復(fù)位鍵開始執(zhí)行用戶程序,即可在開發(fā)板的數(shù)碼管上顯示2個加數(shù)(數(shù)字3和5),以及求得的和(數(shù)字8)。用戶程序執(zhí)行結(jié)果正確,表明模型機(jī)系統(tǒng)設(shè)計正確。

        4 結(jié) 語

        模型機(jī)采用哈佛結(jié)構(gòu)利用自底向上的方法進(jìn)行設(shè)計。首先設(shè)計所需要的各種功能單元電路,依次分層封裝成小系統(tǒng),再生成電路元件并添加總線及控制電路,最后構(gòu)成完整的模型機(jī)系統(tǒng)。單元電路的設(shè)計采用IP核、原理圖和Verilog語言編程相結(jié)合的形式進(jìn)行。原理圖設(shè)計簡潔直觀,適合于邏輯邊界清晰明確、功能相對簡單的單元電路設(shè)計。對于邏輯邊界不夠清晰、功能比較復(fù)雜的單元電路,采用語言編程的方法更方便有效。系統(tǒng)設(shè)計的難點(diǎn)在于指令系統(tǒng)、時鐘、節(jié)拍系統(tǒng)、控制矩陣等。對于系統(tǒng)設(shè)計的正確性,采用仿真波形分析和開發(fā)板下載相結(jié)合的方法進(jìn)行驗(yàn)證。通過仿真分析對各個功能模塊逐一驗(yàn)證,能夠及時發(fā)現(xiàn)并糾正設(shè)計中存在的問題,加快設(shè)計進(jìn)度。通過開發(fā)板下載運(yùn)行所設(shè)計的工程文件,測試了模型機(jī)的功能和系統(tǒng)性能。測試驗(yàn)證結(jié)果表明,模型機(jī)的設(shè)計合理有效,其各項(xiàng)功能及性能符合要求。

        猜你喜歡
        指令模型系統(tǒng)
        一半模型
        聽我指令:大催眠術(shù)
        Smartflower POP 一體式光伏系統(tǒng)
        WJ-700無人機(jī)系統(tǒng)
        ZC系列無人機(jī)遙感系統(tǒng)
        北京測繪(2020年12期)2020-12-29 01:33:58
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計的漸近分布
        ARINC661顯控指令快速驗(yàn)證方法
        LED照明產(chǎn)品歐盟ErP指令要求解讀
        電子測試(2018年18期)2018-11-14 02:30:34
        連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
        日本在线免费不卡一区二区三区| 国产无套护士在线观看| www插插插无码视频网站| 日本一区二区视频免费观看| 精品极品一区二区三区| 亚洲av成人网| 人妻av一区二区三区精品| 日韩无码尤物视频| 亚洲1区第2区第3区在线播放| 777精品出轨人妻国产| 亚洲一区av无码少妇电影| 国产视频在线一区二区三区四区| 一二三四在线观看韩国视频| 妺妺窝人体色777777| 日本少妇被黑人xxxxx| 性做久久久久久久| 日韩av天堂综合网久久| 日本一区二区三区爆乳| 国产精品成人免费视频网站京东| 91精品综合久久久久m3u8| 成人自拍偷拍视频在线观看| 精品国际久久久久999波多野| 亚洲精品自产拍在线观看| 美女视频永久黄网站免费观看国产| 蜜桃视频羞羞在线观看| 精品无码无人网站免费视频| 免费国产交换配乱淫| 97中文字幕一区二区| 精品国产一区二区三区三级| 亚洲一区二区三区无码国产| 日韩AV无码一区二区三不卡| 亚洲成在人线天堂网站| 丰满的人妻hd高清日本| 美女裸体自慰在线观看| av网站可以直接看的| 中国国产不卡视频在线观看| 久久中文字幕无码专区| 在线a人片免费观看国产| 久久人妻中文字幕精品一区二区| 麻豆╳╳╳乱女另类| 亚洲成a人片在线网站|