【正文】
由存儲(chǔ)器 EPRO。在第 3 個(gè) CLK 下降沿到達(dá)時(shí), T2 節(jié)拍結(jié)束,開始 T3 節(jié)拍。 ( 3)在 T2=1 節(jié)拍期間, IIR=0; IPC=1。 ( 2) 在 T1=1 節(jié)拍期間, IDR=1;在第 2 個(gè) CLK 上升沿到來時(shí),將指令操作碼00111110 送入 DR,并直接送到內(nèi)部數(shù)據(jù)總線。 理工大學(xué)學(xué)士學(xué)位論文 42 4 基于 VHDL 的 8 位模型計(jì)算機(jī)的實(shí)現(xiàn) 基于 VHDL 的 微程序執(zhí)行流程圖 圖 微程序執(zhí)行流程圖 開 始取 指 令 微 程 序 的 入 口 地 址從 C S 讀 微 指 令產(chǎn) 生 下 一 條 微 指 令 的 地 址取 指 令 微 程 序 完 了 嗎取 出 指 令是經(jīng) 指 令 譯 碼 器 譯 碼 , 形 成 本 指 令 的 微 程 序 入 口 地址執(zhí) 行 微 程 序本 微 程 序 完 了 嗎 ?否是否理工大學(xué)學(xué)士學(xué)位論文 43 8 位模型機(jī)的頂層原理圖設(shè)計(jì) 圖 8 位模型計(jì)算機(jī)頂層設(shè)計(jì)原理圖 理工大學(xué)學(xué)士學(xué)位論文 44 基于 VHDL 的 8 位模型機(jī)工作流程 連接好頂層設(shè)計(jì)原理圖或頂層文件編程后,編譯成功,就可以進(jìn)行工作其工作過程如下: ( 1) 上電復(fù)位( CLR=0)后,程序計(jì)數(shù)器 PC清零,即 PC 的狀態(tài)是 000;節(jié)拍發(fā)生器產(chǎn)生 T0 節(jié)拍,即 T0=1;在 T0 節(jié)拍內(nèi), IMAR=0,將 PC 內(nèi)容送入地址寄存器 MAR,使存儲(chǔ) 器的地址線為 000,由存儲(chǔ)器 EPROM 讀出指令操作碼 00111110,并送入 DR 的輸入端。 DR 仿真波形 理工大學(xué)學(xué)士學(xué)位論文 41 圖 數(shù)據(jù)寄存器 DR 功能仿真 波形 分析 :輸入數(shù)據(jù)設(shè)置從 00000000 開始遞增 1, EDR 和 IDR 設(shè)置為 01 交替且在時(shí)鐘上升沿是不變化 的 ,當(dāng) IDR=1 且時(shí)鐘信號(hào) CLK 上升沿到來時(shí),將被選中的存儲(chǔ)單元中的數(shù)據(jù)存入 DR。 DATA_OUT=REGQ WHEN EDR=’0’ ELSE ―ZZZZZZZZ‖。 END IF。 BEGIN PROCESS(CLK,IDR,EDR) BEGIN IF(CLK’EVENT AND CLK=’1’) THEN IF(IDR=’1’) THEN REGQ=DATA_IN。 END DR。 CLK:IN STD_LOGIC。 IDR:IN STD_LOGIC。 USE 。當(dāng) EDR=1 時(shí) DR 輸出成高阻態(tài);當(dāng) EDR=0 時(shí), DR 將所存儲(chǔ)數(shù)據(jù)送到數(shù)據(jù)總線。輸出信號(hào)為 DOUT 輸出的是選中地址中相應(yīng)的內(nèi)容,如圖 所示,仿真波形圖驗(yàn)證了其功能的正確性。 END A。 END IF。 BEGIN IF(CS=’0’) THEN IF(WR=’0’) THEN MEM(CONV_INTEGER(ADDR(2 DOWNTO 0))):=DIN。 ARCHITECTURE A OF RAM IS TYPE MEMORY IS ARRAY(0 TO 4) OF STD_LOGIC_VECTOR(7 DOWNTO 0)。 ADDR:IN STD_LOGIC_VECTOR(2 DOWNTO 0))。 DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 USE 。 USE 。 存儲(chǔ)器 RAM 說明:用于存儲(chǔ)程序和數(shù)據(jù) 開 始C S = 0W R = 0Y讀 出 地 址 內(nèi) 容N結(jié) 束寫 入 地 址 內(nèi) 容YN 圖 存儲(chǔ)器 RAM 程序流程圖 說明:計(jì)算機(jī)是按事先編寫的程序進(jìn)行運(yùn)算的,首先將編寫好的程序?qū)懭氪鎯?chǔ)器,計(jì)算機(jī)在運(yùn)行過程中對(duì)存儲(chǔ)器進(jìn)行讀寫 操作。 END A。 END IF。 ARCHITECTURE A OF MAR IS 理工大學(xué)學(xué)士學(xué)位論文 35 BEGIN PROCESS(CLK,IMAR) BEGIN IF(CLK’EVENT AND CLK=’1’) THEN IF (IMAR=’0’) THEN ADDR_OUT=ADDR_IN。 ADDR_OUT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0))。 IMAR:IN STD_LOGIC。 USE 。 理工大學(xué)學(xué)士學(xué)位論文 34 開 始C LK = 1IM A R = 0Y輸 出 地 址 值Y結(jié) 束NN 圖 地址寄存器模塊程序流程圖 說明:用來保存當(dāng)前 CPU所訪問的主存儲(chǔ)器單元的地址,由于主存儲(chǔ)器與 CPU 之間存在操作速度上的差別,所以必須使用地址寄存器來保存地址信息,直到主存儲(chǔ)器的讀 /寫操作完成為止。 理工大學(xué)學(xué)士學(xué)位論文 33 圖 程序計(jì)數(shù)器功能仿真 波形 分析 :時(shí)鐘信號(hào) CLK 周期設(shè)為 10ns,前 20nsCLR 信號(hào)設(shè)為低電平,程序計(jì)數(shù)器清零輸出為 000,第 20ns 之后 CLR=1,程序計(jì)數(shù)器開始隨時(shí)鐘上升沿開始計(jì)數(shù),輸出地址為 000, 001, 010, 011, 100, 101, 110, 111,波形如圖 所示。 PCOUT=QOUT。 END IF。 ELSIF(CLK’EVENT AND CLK=’1’) THEN IF(IPC=’1’) THEN QOUT=QOUT+1。 ARCHITECTURE A OF PC IS SIGNAL QOUT:STD_LOGIC_VECTOR(2 DOWNTO 0)。 PCOUT:OUT STD_LOGIC_VECTOR(2 DOWNTO 0))。 USE 。 USE 。由于模型計(jì)算機(jī)只有 5 個(gè) 字節(jié)的機(jī)器碼,所以程序計(jì)數(shù)器 PC 的輸出只使用 3 位,當(dāng) IPC=0 時(shí),計(jì)數(shù)器保持原狀態(tài);IPC=1 時(shí),計(jì)數(shù)器處于計(jì)數(shù)狀態(tài),當(dāng)時(shí)鐘信號(hào) CLK 上升沿到來時(shí),做加 1 運(yùn)算。 程序計(jì)數(shù)器模塊 說明:用于確定下一條指令的地址。 END A。 END IF。 CLK_TEMP=NOT CLK_TEMP。 PROCESS(CLK_50M,CLK_TEMP) VARIABLE COUNTER:INTEGER RANGE 0 TO 25000000。 ARCHITECTURE A OF CLK_SOURCE IS SIGNAL CLK_TEMP:STD_LOGIC。 CLK:OUT STD_LOGIC)。 USE 。 開 始C o u n t e r = 2 5 0 0 0 0 0 0時(shí) 鐘 發(fā) 生 且 上 升 沿NC o u n t e r = c o u n t e r + 1YC o u n t e r 歸 零Y結(jié) 束N 圖 時(shí)鐘產(chǎn)生器模塊程序流程圖 說明:用于產(chǎn)生固定頻率的方波,時(shí)鐘周期為 ,設(shè)置 counter 值從 0 到 25000000依次按 clk 周期順次加一得以實(shí)現(xiàn),如此循環(huán)。 在此仿真圖中為了清晰其功能把 DATA_IN 設(shè)置成 00111110, 11100110, 01110110,循環(huán) ,仿真結(jié)果如圖 所示ADD,LD,HALT 依次使能,證明此功能模塊設(shè)計(jì)成功。當(dāng)執(zhí)行一條指令時(shí),先把它從主存儲(chǔ)器中取到數(shù)據(jù)寄存器中,然后在傳送理工大學(xué)學(xué)士學(xué)位論文 28 到指令寄存器。 END A。 END CASE。HALT=’1’。 WHEN‖01110110‖=LD=’0’。ADD=’1’。HALT=’0’。 PROCESS(CLK,REGQ) BEGIN CASE REGQ IS WHEN‖00111110‖=LD=’1’。 END IF。 BEGIN PROCESS(CLK,IIR) BEGIN IF(CLK’EVENT AND CLK=’1’)THEN IF(IIR=’0’)THEN REGQ=DATA_IN。 END IR。 CLK:IN STD_LOGIC。 ENTITY IR IS PORT(DATA_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 理工大學(xué)學(xué)士學(xué)位論文 26 LIBRARY IEEE。 理工大學(xué)學(xué)士學(xué)位論文 25 開 始C L K = 1IIR = 0Y輸 入 指 令 代 碼YR E G Q = 0 0 1 1 1 1 1 0R E G Q = 1 1 1 0 0 1 1 0NR E G Q = 0 1 1 1 0 1 1 0NN U L LN結(jié) 束輸 出 L DY輸 出 A D DY輸 出 H A L TYNN 圖 指令寄存器模塊程序流程圖 說明:當(dāng)執(zhí)行一條指令時(shí),先把它從主存儲(chǔ)器中取到數(shù)據(jù)寄存器中,然后在傳送到指令寄存器。 理工大學(xué)學(xué)士學(xué)位論文 24 圖 節(jié)拍發(fā)生器仿真波形圖 波形 分析 :根據(jù)輸入的時(shí)鐘信號(hào)以 8 個(gè)時(shí)鐘周期為一個(gè)大周期發(fā)生一個(gè)節(jié)拍脈沖,從 T0 到 T7 依次循環(huán)發(fā)生,結(jié)果如圖 所示,節(jié)拍發(fā)生器模塊功能設(shè)計(jì)成功。 END PROCESS。 TEMP(7)=TEMP(6)。 TEMP(5)=TEMP(4)。 TEMP(3)=TEMP(2)。 TEMP(1)=TEMP(0)。 TEMP(7)=’0’。 TEMP(5)=’0’。 TEMP(3)=’0’。 TEMP(1)=’0’。 T7=TEMP(7)。 T5=TEMP(5)。 T3=TEMP(3)。 T1=TEMP(1)。 ARCHITECTURE A OF COUNTER IS SIGNAL TEMP:STD_LOGIC_VECTOR(7 DOWNTO 0)。 T0,T1,T2,T3,T4,T5,T6,T7:OUT_LOGIC)。 USE 。 USE 。 節(jié)拍發(fā)生器 說明:用于產(chǎn)生 T0T7 的 8 個(gè)節(jié)拍脈沖信號(hào),是模型機(jī)按此節(jié)拍有序的工作 開 始C L R = 0C L K = 1NT E M P (0 ) = T E M P (7 )T E M P (1 ) = T E M P (0 )T E M P (2 ) = T E M P (1 )T E M P (3 ) = T E M P (2 )T E M P (4 ) = T E M P (3 )T E M P (5 ) = T E M P (4 )T E M P (6 ) = T E M P (5 )T E M P (7 ) = T E M P (6 )Y結(jié) 束T E M P (0 ) = 1T E M P (1 ) = 0T E M P (2 ) = 0T E M P (3 ) = 0T E M P (4 ) = 0T E M P (5 ) = 0T E M P (6 ) = 0T E M P (7 ) = 0YN 圖 節(jié)拍發(fā)生器程序流程圖 理工大學(xué)學(xué)士學(xué)位論文 22 說明:輸入信號(hào)位 CLR 和 CLK,當(dāng) CLR=0 時(shí)賦初值,否則當(dāng) CLK 上升沿到來時(shí)進(jìn)行環(huán)形移位,以實(shí)現(xiàn)節(jié)拍發(fā)生器功能。 EDR=(t6 and add) or (t7 and add)。 ESUM=not(t6 and add)。 IPC=t2 or (t5 and ld) or (t5 and add)。 IA=not((t6 and ld)or(t6 and add ))。 圖 控制器 CTRL 功能仿真 理工大學(xué)學(xué)士學(xué)位論文 21 波形 分析 : ADD,LD,T0T7 波形設(shè)置為 0,1 交替, HALT 先為 10ns 的高電平之后皆為低電平,運(yùn)行后結(jié)果如圖