版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VerilogHDL
精簡(jiǎn)指令集計(jì)算機(jī)
簡(jiǎn)介RISC即精簡(jiǎn)指令集計(jì)算機(jī)(ReducedInstructionSetComputer)的縮寫(xiě)。它是一種八十年代才出現(xiàn)的CPU,與一般的CPU相比不僅只是簡(jiǎn)化了指令系統(tǒng),而且是通過(guò)簡(jiǎn)化指令系統(tǒng)使計(jì)算機(jī)的結(jié)構(gòu)更加簡(jiǎn)單合理,從而提高了運(yùn)算速度。從實(shí)現(xiàn)的途徑看,RISC_CPU與一般的CPU的不同處在于:它的時(shí)序控制信號(hào)形成部件是用硬布線邏輯實(shí)現(xiàn)的而不是采用微程序控制的方式。所謂硬布線邏輯也就是用觸發(fā)器和邏輯門(mén)直接連線所構(gòu)成的狀態(tài)機(jī)和組合邏輯,故產(chǎn)生控制序列的速度比用微程序控制方式快得多,因?yàn)檫@樣做省去了讀取微指令的時(shí)間RISCCPU結(jié)構(gòu)
RISC_CPU是一個(gè)復(fù)雜的數(shù)字邏輯電路,但是它的基本部件的邏輯并不復(fù)雜。可把它分成八個(gè)基本部件:
1)時(shí)鐘發(fā)生器2)指令寄存器3)累加器4)RISCCPU算術(shù)邏輯運(yùn)算單元
5)數(shù)據(jù)控制器
6)狀態(tài)控制器
7)程序計(jì)數(shù)器
8)地址多路器
9)存儲(chǔ)器(RAM,ROM)主要特征:
8位數(shù)據(jù)、13位地址、8條指令,每條指令8Tclk指令格式:D15---D13D12---------------------------D0操作碼地址碼1)
HLT停機(jī)操作。該操作將空一個(gè)指令周期,即8個(gè)時(shí)鐘周期。2)
SKZ為零跳過(guò)下一條語(yǔ)句。該操作先判斷當(dāng)前alu中的結(jié)果是否為零,若是零就跳過(guò)下一條語(yǔ)句,否則繼續(xù)執(zhí)行。3)
ADD相加。該操作將累加器中的值與地址所指的存儲(chǔ)器或端口的數(shù)據(jù)相加,結(jié)果仍送回累加器中。4)
AND相與。該操作將累加器的值與地址所指的存儲(chǔ)器或端口的數(shù)據(jù)相與,結(jié)果仍送回累加器中。5)
XOR異或。該操作將累加器的值與指令中給出地址的數(shù)據(jù)異或,結(jié)果仍送回累加器中。6)
LDA讀數(shù)據(jù)。該操作將指令中給出地址的數(shù)據(jù)放入累加器。7)
STO寫(xiě)數(shù)據(jù)。該操作將累加器的數(shù)據(jù)放入指令中給出的地址。8)
JMP無(wú)條件跳轉(zhuǎn)語(yǔ)句。該操作將跳轉(zhuǎn)至指令給出的目的地址,繼續(xù)執(zhí)行。
RISC_CPU是8位微處理器,一律采用直接尋址方式,即數(shù)據(jù)總是放在存儲(chǔ)器中,尋址單元的地址由指令直接給出。這是最簡(jiǎn)單的尋址方式??刂破髟赾lk1下降沿輸出控制信號(hào)。PC隨inc_pc上升沿動(dòng)作(即clk1下降沿)其它部件在clk1上升沿動(dòng)作。即在Ti中間輸出控制信號(hào),在Ti結(jié)束時(shí)動(dòng)作。如取高8位指令:rd=1,load_ir=1,而ir鎖存在T1上升沿鎖存(即T0結(jié)束時(shí))clk1T0T1T2T3T4T5T6T7fetchrdload_irADDRinc_pc時(shí)序alu_clkCPU執(zhí)行指令過(guò)程:T0:狀態(tài)控制器輸出rd=1,load_ir=1,另state=0,由M讀1字節(jié),在T0結(jié)束時(shí)鎖存到ir高8位。即取高字節(jié)指令。T1:inc_pc=1使地址加1,rd=1,load_ir=1,另state=1,由M讀1字節(jié),在T1結(jié)束時(shí)鎖存到ir低8位。即取低字節(jié)指令。T2:空操作T3:inc_pc=1。若opcord=HLT,則HALT=1;T4:若opcord=ADD,AND,XOR,LDA,則rd=1,根據(jù)ir_addr讀Mem
若opcord=JMP,則load_pc=1
若opcord=STO,則datactl_ena=1,將accum通過(guò)alu_out送DBT5:若opcord=ADD,AND,XOR,LDA,則rd=1(繼續(xù)讀Mem)且load_acc=1,由于acc已送alu,alu操作結(jié)果在T5結(jié)束時(shí)鎖存到acc;若opcord=STO,則datactl_ena=1(繼續(xù)將accum通過(guò)alu_out送DB)且wr=1,在T5結(jié)束時(shí)寫(xiě)到Mem;若opcord=JMP,則inc_pc=1,load_pc=1,在inc_pc上升沿鎖存ir_addr到pc;若opcord=SKZ且acc=0,則inc_pc=1。T6:空操作T7:若opcord=SKZ且acc=0,則inc_pc=1,即跳過(guò)一條指令。DATA<7..0>ALU_OUT<7..0>ACCUM<7..0>zeroalu_clkalu
opcode<2..0>data<7..0>opc_iraddr<15..0>enarstregisterclk1data<7..0>accum<7..0>enaaccumrstclk1CLK1INC_PCZEROLOAD_ACCFETCHLOAD_PCRSTCONTROLRDWROPCODE<2..0>LOAD_IRHALTDATACTL_ENA
In<7..0>data<7..0>
datactldata_enafetchaddr<12..0>ir_addr<12..0>adrpc_addr<12..0>ir_addr<12..0>pc_addr<12..0>loadclockcounterrst
clk1fetchclkalu_clk
clk_genDATA<7..0>\IRST\ICLK\I
OPCODE<2..>IR_ADDR<12..0>
ALU_OUT<7..0>ACCUM<7..0>ZEROOPCODE<2..0>DATA_ENAPC_ADDR<12..0>ADDR<12..0>DATA<7..0>\IHALT\ILOAD_IRIR_ADDR<2..0>WR\IRD\ILOAD_ACCINC_PCLOAD_PCRISC——CPU中各部件的相互連接關(guān)系RTL視圖頂層模塊代碼:moduleCPU(zero,clk,reset,halt,rd,wr,ir_addr,addr,data,inc_pc,rom_sel,ram_sel,accum,load_acc,datactl_ena,opcode,alu_clk);inputclk,reset;outputzero,rd,wr,halt,inc_pc,rom_sel,ram_sel,load_acc,datactl_ena,alu_clk;output[12:0]ir_addr,addr;output[2:0]opcode;output[7:0]data,accum;wireclk,reset,halt;wire[7:0]data;wire[12:0]addr;wirerd,wr;wireclk1,fetch,alu_clk;wire[2:0]opcode;wire[12:0]ir_addr,pc_addr;wire[7:0]alu_out,accum;wirezero,inc_pc,load_acc,load_pc,load_ir,data_ena,contr_ena;wire[15:0]opc_iraddr;assignopcode=opc_iraddr[15:13];assignir_addr=opc_iraddr[12:0];clk_genm_clk_gen(.clk(clk),.reset(reset),.clk1(clk1),.clk2(clk2),.clk4(clk4),.fetch(fetch),.alu_clk(alu_clk));代碼registerm_register(.opc_iraddr(opc_iraddr),.data(data),.ena(load_ir),.clk1(clk1),.rst(reset));accumm_accum(.accum(accum),.data(alu_out),.ena(load_acc),.clk1(clk1),.rst(reset));alum_alu(.alu_out(alu_out),.zero(zero),.opcode(opcode),.data(data),.accum(accum),.alu_clk(alu_clk));machinectm_machinect(.ena(ena),.fetch(fetch),.rst(reset));machinem_machine(.inc_pc(inc_pc),.load_acc(load_acc),.load_pc(load_pc),.rd(rd),.wr(wr),.load_ir(load_ir),.datactl_ena(datactl_ena),.halt(halt),.clk1(clk1),.zero(zero),.ena(ena),.opcode(opcode));datactlm_datactl(.data(data),.in(alu_out),.data_ena(datactl_ena));counterm_counter(.pc_addr(pc_addr),.ir_addr(ir_addr),.load(load_pc),.clock(inc_pc),.rst(reset));//.op(opc_iraddr[12:0]),adrm_adr(.addr(addr),.fetch(fetch),.ir_addr(ir_addr),.pc_addr(pc_addr));addr_decodeaddr_decode1(addr,rom_sel,ram_sel);ramram1(.data(data),.addr(addr),.ena(ram_sel),.read(rd),.write(wr));romrom1(.data(data),.addr(addr),.read(rd),.ena(rom_sel));endmodule時(shí)鐘發(fā)生器時(shí)鐘發(fā)生器clkgen利用外來(lái)時(shí)鐘信號(hào)clk來(lái)生成一系列時(shí)鐘信號(hào)clk1、fetch、alu_clk送往CPU的其他部件。其中fetch是外來(lái)時(shí)鐘clk的八分頻信號(hào)。利用fetch的上升沿來(lái)觸發(fā)CPU控制器開(kāi)始執(zhí)行一條指令,同時(shí)fetch信號(hào)還將控制地址多路器輸出指令地址和數(shù)據(jù)地址。clk1信號(hào)用作指令寄存器、累加器、狀態(tài)控制器的時(shí)鐘信號(hào)。alu_clk則用于觸發(fā)算術(shù)邏輯運(yùn)算單元。
CLKCLK1CLKGENALU_CLKFETCHCLKCLK1ALU_CLK
FETCH時(shí)鐘發(fā)生器RESETRESET
clkclk1clk2clk4fetchalu_clk時(shí)鐘發(fā)生器clkgen的波形REL視圖時(shí)鐘發(fā)生器代碼moduleclk_gen(clk,reset,clk1,clk2,clk4,fetch,alu_clk);inputclk,reset;outputclk1,clk2,clk4,fetch,alu_clk;wireclk,reset;regclk2,clk4,fetch,alu_clk;reg[7:0]state;parameterS1=8'b00000001,S2=8'b00000010,S3=8'b00000100,S4=8'b00001000,S5=8'b00010000,S6=8'b00100000,S7=8'b01000000,S8=8'b10000000,idle=8'b00000000;assignclk1=~clk;always@(negedgeclk)if(reset)beginclk2<=0;clk4<=1;fetch<=0;alu_clk<=0;state<=idle;
代碼endelsebegincase(state)S1:beginclk2<=~clk2;alu_clk<=~alu_clk;state<=S2;endS2:beginclk2<=~clk2;clk4<=~clk4;alu_clk<=~alu_clk;state<=S3;endS3:beginclk2<=~clk2;state<=S4;endS4:beginclk2<=~clk2;clk4<=~clk4;fetch<=~fetch;state<=S5;endS5:beginclk2<=~clk2;state<=S6;endS6:beginclk2<=~clk2;clk4<=~clk4;state<=S7;endS7:beginclk2<=~clk2;state<=S8;end
S8:beginclk2<=~clk2;clk4<=~clk4;fetch<=~fetch;state<=S1;endidle:state<=S1;default:state<=idle;endcaseendendmodule代碼endS5:beginclk2<=~clk2;state<=S6;endS6:beginclk2<=~clk2;clk4<=~clk4;state<=S7;endS7:beginclk2<=~clk2;state<=S8;end
S8:beginclk2<=~clk2;clk4<=~clk4;fetch<=~fetch;state<=S1;endidle:state<=S1;default:state<=idle;endcaseendendmodule指令寄存器
顧名思義,指令寄存器用于寄存指令。指令寄存器的觸發(fā)時(shí)鐘是clk1,在clk1的正沿觸發(fā)下,寄存器將數(shù)據(jù)總線送來(lái)的指令存入高8位或低8位寄存器中。但并不是每個(gè)clk1的上升沿都寄存數(shù)據(jù)總線的數(shù)據(jù),因?yàn)閿?shù)據(jù)總線上有時(shí)傳輸指令,有時(shí)傳輸數(shù)據(jù)。什么時(shí)候寄存,什么時(shí)候不寄存由CPU狀態(tài)控制器的load_ir信號(hào)控制。load_ir信號(hào)通過(guò)ena口輸入到指令寄存器。復(fù)位后,指令寄存器被清為零。每條指令為2個(gè)字節(jié),即16位。高3位是操作碼,低13位是地址。(CPU的地址總線為13位,尋址空間為8K字節(jié)。)本設(shè)計(jì)的數(shù)據(jù)總線為8位,所以每條指令需取兩次。先取高8位,后取低8位。而當(dāng)前取的是高8位還是低8位,由變量state記錄。state為零表示取的高8位,存入高8位寄存器,同時(shí)將變量state置為1。下次再寄存時(shí),由于state為1,可知取的是低8位,存入低8位寄存器中。RTL視圖代碼moduleregister(opc_iraddr,data,ena,clk1,rst);output[15:0]opc_iraddr;input[7:0]data;inputena,clk1,rst;reg[15:0]opc_iraddr;regstate;always@(posedgeclk1)beginif(rst)beginopc_iraddr<=16'b0000_0000_0000_0000;state<=1'b0;endelsebeginif(ena)//如果加載指令寄存器信號(hào)load_ir到來(lái),
begin//分兩個(gè)時(shí)鐘每次8位加載指令寄存器
casex(state) //先高字節(jié),后低字節(jié)
1'b0:beginopc_iraddr[15:8]<=data;state<=1;end1'b1:beginopc_iraddr[7:0]<=data;state<=0;enddefault:beginopc_iraddr[15:0]<=16'bxxxxxxxxxxxxxxxx;state<=1'bx;endendcaseendelsestate<=1'b0;endendendmodule代碼beginif(ena)//如果加載指令寄存器信號(hào)load_ir到來(lái),
begin//分兩個(gè)時(shí)鐘每次8位加載指令寄存器
casex(state) //先高字節(jié),后低字節(jié)
1'b0:beginopc_iraddr[15:8]<=data;state<=1;end1'b1:beginopc_iraddr[7:0]<=data;state<=0;enddefault:beginopc_iraddr[15:0]<=16'bxxxxxxxxxxxxxxxx;state<=1'bx;endendcaseendelsestate<=1‘b0;end;endmodule累加器累加器用于存放當(dāng)前的結(jié)果,它也是雙目運(yùn)算其中一個(gè)數(shù)據(jù)來(lái)源。復(fù)位后,累加器的值是零。當(dāng)累加器通過(guò)ena口收到來(lái)自CPU狀態(tài)控制器load_acc信號(hào)時(shí),在clk1時(shí)鐘正跳沿時(shí)就收到來(lái)自于數(shù)據(jù)總線的數(shù)據(jù)。RTL視圖代碼moduleaccum(accum,data,ena,clk1,rst);output[7:0]accum;input[7:0]data;inputena,clk1,rst;reg[7:0]accum;always@(posedgeclk1)beginif(rst)accum<=8'b0000_0000; //Resetelseif(ena)//當(dāng)CPU狀態(tài)控制器發(fā)出load_acc信號(hào)
accum<=data; //Accumulateendendmodule算術(shù)運(yùn)算器算術(shù)邏輯運(yùn)算單元根據(jù)輸入的8種不同操作碼分別實(shí)現(xiàn)相應(yīng)的加、與、異或、跳轉(zhuǎn)等8種基本操作運(yùn)算。利用這幾種基本運(yùn)算可以實(shí)現(xiàn)很多種其它運(yùn)算以及邏輯判斷等操作。
RTL視圖代碼modulealu(alu_out,zero,data,accum,alu_clk,opcode);output[7:0]alu_out;outputzero;input[7:0]data,accum;input[2:0]opcode;inputalu_clk;reg[7:0]alu_out;parameter HLT=3'b000,SKZ=3'b001,ADD=3'b010,ANDD=3'b011,XORR=3'b100,LDA=3'b101,STO=3'b110,JMP=3'b111;assignzero=!accum;always@(posedgealu_clk)begin//操作碼來(lái)自指令寄存器的輸出opc_iaddr<15..0>的
//低3位代碼
casex(opcode) HLT:alu_out<=accum;SKZ:alu_out<=accum;ADD:alu_out<=data+accum;ANDD:alu_out<=data&accum;XORR:alu_out<=data^accum;LDA:alu_out<=data;STO:alu_out<=accum;JMP:alu_out<=accum;default:alu_out<=8'bxxxx_xxxx;endcaseendendmodule數(shù)據(jù)控制器數(shù)據(jù)控制器的作用是控制累加器數(shù)據(jù)輸出,由于數(shù)據(jù)總線是各種操作時(shí)傳送數(shù)據(jù)的公共通道,不同的情況下傳送不同的內(nèi)容。有時(shí)要傳輸指令,有時(shí)要傳送RAM區(qū)或接口的數(shù)據(jù)。計(jì)算單元的數(shù)據(jù)只有在需要往RAM區(qū)或端口寫(xiě)時(shí)才允許輸出,否則應(yīng)呈現(xiàn)高阻態(tài),以允許其它部件使用數(shù)據(jù)總線。所以任何部件往總線上輸出數(shù)據(jù)時(shí),都需要一控制信號(hào)。而此控制信號(hào)的啟、停,則由CPU狀態(tài)控制器輸出的各信號(hào)控制決定。數(shù)據(jù)控制器何時(shí)輸出ALU的數(shù)據(jù)則由狀態(tài)控制器輸出的控制信號(hào)datactl_ena決定RTL視圖代碼moduledatactl(data,in,data_ena);output[7:0]data;input[7:0]in;inputdata_ena;assigndata=(data_ena)?in:8'bzzzz_zzzz;endmodule地址多路器地址多路器用于選擇輸出的地址是PC(程序計(jì)數(shù))地址還是數(shù)據(jù)/端口地址。每個(gè)指令周期的前4個(gè)時(shí)鐘周期用于從ROM中讀取指令,輸出的應(yīng)是PC地址。后4個(gè)時(shí)鐘周期用于對(duì)RAM或端口的讀寫(xiě),該地址由指令中給出。地址的選擇輸出信號(hào)由時(shí)鐘信號(hào)的8分頻信號(hào)fetch提供。RTL視圖代碼moduleadr(addr,fetch,ir_addr,pc_addr);output[12:0]addr;input[12:0]ir_addr,pc_addr;inputfetch;assignaddr=fetch?pc_addr:ir_addr;endmodule程序計(jì)數(shù)器程序計(jì)數(shù)器用于提供指令地址。以便讀取指令,指令按地址順序存放在存儲(chǔ)器中。有兩種途徑可形成指令地址:其一是順序執(zhí)行的情況,其二是遇到要改變順序執(zhí)行程序的情況,例如執(zhí)行JMP指令后,需要形成新的指令地址。復(fù)位后,指令指針為零,即每次CPU重新啟動(dòng)將從ROM的零地址開(kāi)始讀取指令并執(zhí)行。每條指令執(zhí)行完需2個(gè)時(shí)鐘,這時(shí)pc_addr已被增2,指向下一條指令。(因?yàn)槊織l指令占兩個(gè)字節(jié)。)如果正執(zhí)行的指令是跳轉(zhuǎn)語(yǔ)句,這時(shí)CPU狀態(tài)控制器將會(huì)輸出load_pc信號(hào),通過(guò)load口進(jìn)入程序計(jì)數(shù)器。程序計(jì)數(shù)器(pc_addr)將裝入目標(biāo)地址(ir_addr),而不是增2。RTL視圖代碼modulecounter(pc_addr,ir_addr,load,clock,rst);output[12:0]pc_addr;input[12:0]ir_addr;inputload,clock,rst;reg[12:0]pc_addr;
always@(posedgeclockorposedgerst)beginif(rst)pc_addr<=13'b0_0000_0000_0000;elseif(load)pc_addr<=ir_addr;elsepc_addr<=pc_addr+1;endendmodule狀態(tài)控制器狀態(tài)控制器由兩部分組成:
1.狀態(tài)機(jī)(圖中的MACHINE部分)2.狀態(tài)機(jī)控制器(圖中的MACHINECTL部分)
狀態(tài)機(jī)控制器接受復(fù)位信號(hào)RST,當(dāng)RST有效時(shí)通過(guò)信號(hào)ena使其為0,輸入到狀態(tài)機(jī)中停止?fàn)顟B(tài)機(jī)的工作。簡(jiǎn)介狀態(tài)機(jī)是CPU的控制核心,用于產(chǎn)生一系列的控制信號(hào),啟動(dòng)或停止某些部件。CPU何時(shí)進(jìn)行讀指令讀寫(xiě)I/O端口,RAM區(qū)等操作,都是由狀態(tài)機(jī)來(lái)控制的。狀態(tài)機(jī)的當(dāng)前狀態(tài),由變量state記錄,state的值就是當(dāng)前這個(gè)指令周期中已經(jīng)過(guò)的時(shí)鐘數(shù)(從零計(jì)起)。指令周期是由8個(gè)時(shí)鐘周期組成,每個(gè)時(shí)鐘周期都要完成固定的操作1)第0個(gè)時(shí)鐘,因?yàn)镃PU狀態(tài)控制器的輸出:rd和load_ir為高電平,其余均為低電平。指令寄存器寄存由ROM送來(lái)的高8位指令代碼。2)第1個(gè)時(shí)鐘,與上一時(shí)鐘相比只是inc_pc從0變?yōu)?故PC增1,ROM送來(lái)低8位指令代碼,指令寄存器寄存該8位代碼。3)第2個(gè)時(shí)鐘,空操作。4)第3個(gè)時(shí)鐘,PC增1,指向下一條指令。若操作符為HLT,則輸出信號(hào)HLT為高。如果操作符不為HLT,除了PC增一外(指向下一條指令),其它各控制線輸出為零。5)第4個(gè)時(shí)鐘,若操作符為AND、ADD、XOR或LDA,讀相應(yīng)地址的數(shù)據(jù);若為JMP,將目的地址送給程序計(jì)數(shù)器;若為STO,輸出累加器數(shù)據(jù)。6)第5個(gè)時(shí)鐘,若操作符為ANDD、ADD或XORR,算術(shù)運(yùn)算器就進(jìn)行相應(yīng)的運(yùn)算;若為L(zhǎng)DA,就把數(shù)據(jù)通過(guò)算術(shù)運(yùn)算器送給累加器;若為SKZ,先判斷累加器的值是否為0,如果為0,PC就增1,否則保持原值;若為JMP,鎖存目的地址;若為STO,將數(shù)據(jù)寫(xiě)入地址處。7)第6個(gè)時(shí)鐘,空操作。8)第7個(gè)時(shí)鐘,若操作符為SKZ且累加器值為0,則PC值再增1,跳過(guò)一條指令,否則PC無(wú)變化。RTL視圖代碼modulemachine(inc_pc,load_acc,load_pc,rd,wr,load_ir,datactl_ena,halt,clk1,zero,ena,opcode);outputinc_pc,load_acc,load_pc,rd,wr,load_ir;outputdatactl_ena,halt;inputclk1,zero,ena;input[2:0]opcode;reginc_pc,load_acc,load_pc,rd,wr,load_ir;regdatactl_ena,halt;reg[2:0]state;parameterHLT=3'b000,SKZ=3'b001, ADD=3'b010, ANDD=3'b011, XORR=3'b100, LDA=3'b101, STO=3'b110, JMP=3'b111; always@(negedgeclk1)beginif(!ena)//接收到復(fù)位信號(hào)RST,進(jìn)行復(fù)位操作
beginstate<=3'b000;{inc_pc,load_acc,load_pc,rd}<=4'b0000;{wr,load_ir,datactl_ena,halt}<=4'b0000;state<=3'b011;end3'b011://nextinstructionaddresssetup分析指令從這里開(kāi)始
beginif(opcode==HLT) //指令為暫停HLTbegin{inc_pc,load_acc,load_pc,rd}<=4'b1000;{wr,load_ir,datactl_ena,halt}<=4'b0001;endelsebegin{inc_pc,load_acc,load_pc,rd}<=4'b1000;{wr,load_ir,datactl_ena,halt}<=4'b0000;end state<=3'b100;end3'b100://fetchoprandbeginif(opcode==JMP)begin{inc_pc,load_acc,load_pc,rd}<=4'b0010;{wr,load_ir,datactl_ena,halt}<=4'b0000;endelseif(opcode==ADD||opcode==ANDD||opcode==XORR||opcode==LDA)begin{inc_pc,load_acc,load_pc,rd}<=4'b0001;{wr,load_ir,datactl_ena,halt}<=4'b0000;end elseif(opcode==STO)begin{inc_pc,load_acc,load_pc,rd}<=4'b0000;
{wr,load_ir,datactl_ena,halt}<=4'b0010;endelseif(opcode==ADD||opcode==ANDD||opcode==XORR||opcode==LDA)begin{inc_pc,load_acc,load_pc,rd}<=4'b0001;{wr,load_ir,datactl_ena,halt}<=4'b0000;endelsebegin{inc_pc,load_acc,load_pc,rd}<=4'b0000;{wr,load_ir,datactl_ena,halt}<=4'b0000;endstate<=3'b111;end3'b111: //beginif(opcode==SKZ&&zero==1)begin{inc_pc,load_acc,load_pc,rd}<=4'b1000;{wr,load_ir,datactl_ena,halt}<=4'b0000;endelsebegin{inc_pc,load_acc,load_pc,rd}<=4'b0000;{wr,load_ir,datactl_ena,halt}<=4'b0000;endstate<=3'b000;enddefault:begin{inc_pc,load_acc,load_pc,rd}<=4'b0000;{wr,load_ir,datactl_ena,halt}<=4'b0000;state<=3'b000;endendcaseendendtask//--
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)新保潔流程構(gòu)建智慧校園環(huán)境
- 2024年度大學(xué)特聘教授學(xué)術(shù)成果發(fā)布合同3篇
- 2024年中秋月餅禮盒銷售與消費(fèi)者滿意度提升合同2篇
- 2024年照明工程照明效果評(píng)估與優(yōu)化合同3篇
- 辦公環(huán)境中的德育教育與心理輔導(dǎo)
- 2025中國(guó)石油大慶油田限責(zé)任公司高校畢業(yè)生招聘430人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)電力科學(xué)研究院限公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)電信江西公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)法學(xué)會(huì)所屬事業(yè)單位公開(kāi)招聘第二次補(bǔ)充高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)中化控股限責(zé)任公司校園招聘2959人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 部隊(duì)物業(yè)服務(wù)投標(biāo)方案
- 銷售單 代合同范例
- 2024譯林版七年級(jí)英語(yǔ)上冊(cè)單詞(帶音標(biāo))
- 品管圈PDCA案例-普外科提高甲狀腺手術(shù)患者功能鍛煉合格率
- 2024-2025學(xué)年語(yǔ)文二年級(jí)上冊(cè) 部編版期末測(cè)試卷(含答案)
- 2025年消防救援設(shè)施操作員職業(yè)技能資格知識(shí)考試題庫(kù)與答案
- 電玩城租賃經(jīng)營(yíng)合同
- 2024年中國(guó)救生圈市場(chǎng)調(diào)查研究報(bào)告
- 煤炭供應(yīng)項(xiàng)目(運(yùn)輸供貨方案)
- “雄鷹杯”全國(guó)小動(dòng)物醫(yī)師技能大賽考試題庫(kù)(660題)
評(píng)論
0/150
提交評(píng)論