




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CPU单片机实验板通用计算机与单片机在硬件结构上的比较
微型计算机系统单片机系统微型计算机的组成框图(由多个IC芯片组装在一个主电路板上)数据RAMCPU并行I/O程序ROM定时/计数器串型端口中断控制器扩展I/O端口系统总线(DB、AB、CB)所有基本单元都组装在一个IC芯片上MCS-51单片机MCS-51单片机内部方框图
时钟电路4KROM程序存储器256BRAM数据存储器2X16位定时/计数器CPU处理器64KB总线扩展控制器可编程I/O端口P0-3可编程串行口MCS-51单片机外型图(DIP-40封装)MCS-51单片机的逻辑符号图VCCRSTXTAL1
P0口XTAL2/EA/PSENALE
P1口P3口RXDTXD/INT0/INT1P2口T0T1/WR/RDGND87C51EPROM型AT89C51ATMELFLASH型MCS-51单片机的外形和逻辑符号cpuABDB地址译码器ROMRAMclockresetMICROCOMPUTERSYSTEMreadwrite单片机时序1)振荡周期
——
指为单片机提供定时信号的振荡源的周期,若为内部产生方式时,为石英晶体的振荡周期。2)时钟周期
——也称为状态周期,用S表示。时钟周期是计算机中最基本的时间单位,在一个时钟周期内,CPU完成一个最基本的动作。MCS—51单片机中一个时钟周期为振荡周期的2倍。3)机器周期
——完成一个基本操作(例如,取指令、存储器读、存储器写等)所需要的时间称为机器周期。MCS—51的一个机器周期含有6个时钟周期。4)指令周期
——完成一条指令所需要的时间称为指令周期。MCS—5l的指令周期含1~4个机器周期不等,其中多数为单周期指令,还有2周期和4周期指令。4周期指令只有乘、除两条指令。单片机时钟P1P2S1振荡周期时钟周期机器周期机器周期指令周期XTAL2(OSC)S2S3S4S5S6S1S2S4S5S3S6P1P1P1P1P1P1P1P1P1P1P1P2P2P2P2P2P2P2P2P2P2P2若MCS-51单片机外接晶振为12MHz时,则单片机的四个周期的具体值为:振荡周期=1/12MHz=1/12μs=0.0833μs时钟周期=1/6μs=0.167μs机器周期=1μs指令周期=1~4μs单片机指令功能一览表
指令机器码功能说明数据传送类指令
操作码+【操作数】MOV
A,RnE8~EF
寄存器送累加器MOV
A,dirE5dir直接字节送累加器MOV
A,#data74data
立即数送累加器NOP00空操作MOV
dir,#data75dirdata立即数送直接字节MOVX
A,@DPTRE0外部RAM(16位地址)读操作MOV
A,#55NOPMOVXA,@DPTR745500E00000000100100011ROM122333000000000100100011RAMA?DPTR0010CPU小结运算器和控制器组成按时钟节拍工作工作的规定是指令指令由操作码和操作数组成过程是取指令和执行指令执行指令是产生各种按一定的时序的控制信号第17章简化的RISC_CPU设计精简指令集(RISC)CPU的构造原理和设计方法17.1什么是CPUCPU:中央处理单元,是计算机的核心部件计算机进行信息处理分两个步骤:将数据和程序(指令序列)输入到计算机的存储器中从第一条指令的地址起开始执行程序,得到所需结果,结束运行。CPU的作用:协调并控制计算机的各部件,使之有条不紊的执行程序CPU的基本功能:取指令-地址与控制信号分析指令-即指令译码,操作和操作控制信号执行指令-操作控制信号作用于各部件CPU的基本功能概括:能对指令进行译码并执行规定的动作可以进行算术和逻辑运算能与存储器和外设交换数据提供系统所需的控制CPU的内部结构:算术逻辑运算单元(ALU)累加器程序计数器指令寄存器和译码器时序和控制部件RISC即精简指令集计算机:ReducedInstructionSetComputer时序控制信号由硬件而不是微程序控制cpuABDB地址译码器ROMRAMclockresetMICROCOMPUTERSYSTEMreadwriteD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0高8位低8位地址码指令码指令指令数目:8条地址空间:213=8K助记符操作码功能HLT3'b000
暂停SKZ3‘b001累加器为零转移ADD3’b010加ANDD3‘b011与XORR3‘b100或LDA3‘b101取数STO3‘b110存数JMP3‘b111转移指令集CPU的基本功能:取指令-地址与控制信号分析指令-即指令译码,操作和操作控制信号执行指令-操作控制信号作用于各部件CPU的基本功能概括:能对指令进行译码并执行规定的动作可以进行算术和逻辑运算能与存储器和外设交换数据提供系统所需的控制CPU的内部结构:算术逻辑运算单元(ALU)累加器程序计数器指令寄存器和译码器时序和控制部件alu_ena累加器A指令寄存器IR算逻单元ALU数据控制地址选择程序计数器PC控制状态机时钟信号ABDBhaltrdwrclkrstload_accinc_pcload_pcload_irfetchdatactl_enaCPU的结构功能图累加器A指令寄存器IR算逻单元ALU数据控制地址选择程序计数器PC控制状态机时钟信号ABDBhaltrdwrclkrstload_accfetchinc_pcload_pcload_iralu_enadatactl_enahaltload_irrdinc_pcalu_enafetchclk01234567halt指令累加器指令寄存器算逻单元数据控制地址选择程序计数器控制状态机时钟信号ABDBrdload_accfetchinc_pcload_iralu_enadataload_irrdinc_pcalu_enafetchclk01234567LDA1000B000EE0110001001RAMEEload_accaddress000000011000B00000000001ROM0000020002累加器指令寄存器算逻单元数据控制地址选择程序计数器控制状态机时钟信号ABDBrdload_accfetchinc_pcload_iralu_enadataload_irrdinc_pcalu_enafetchclk01234567ADD10015001EE1110001001RAM11load_accaddress000200031001500100020003ROM00040004累加器指令寄存器算逻单元数据控制地址选择程序计数器控制状态机时钟信号ABDBrdload_accfetchinc_pcload_iralu_enadataload_irrdinc_pcalu_enafetchclk01234567STO1001D001EE0110001001RAMFFwraddress000400051001D00100040005ROM0006000617.3.1时钟发生器fetch是控制信号,clk的8分频信号alu_ena用于控制算术逻辑运算单元clk是时钟信号reset是复位信号状态转移图Idle
S117.3.1时钟发生器
S2
S3
S4
S5
S6
S7
S8
S1
S2
S3
S4
S5
S6
S7
S8
S1
S2
S3
S4
S5
S6
S7
S8
idle//-------clk_gen.v--------`timescale1ns/1nsmodule
clk_gen(clk,reset,fetch,alu_ena);
input
clk,reset;
output
fetch,alu_ena;
wire
clk,reset;
reg
fetch,alu_ena;reg
[7:0]state;
parameter
S1=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;17.3.1时钟发生器always@(posedgeclk)if(reset)beginfetch<=0;alu_ena<=0;state<=idle;endelsebegin case(state) … … … …default:state<=idle; endcase endcase(state)S1:begin fetch<=1; state<=S2;endS2:state<=S3; S3:state<=S4;S4:state<=S5;S5:beginstate<=S6; fetch=0;end S6:begin state<=S7; alu_ena<=1;end S7:beginalu_ena<=0;state<=S8;endS8:state<=S1;idle:state<=S1;default:state<=idle;endcase17.3.2指令寄存器resetclkload_iropcode[2:0]ir_addr[12:0]`timescale1ns/1nsmoduleregister(opc_iraddr,data,ena,clk,rst);output[15:0]opc_iraddr;input[7:0]data;inputena,clk,rst;reg[15:0]opc_iraddr;regstate;always@(posedgeclk)beginif(rst)beginopc_iraddr<=16'b0000_0000_0000_0000;state<=1'b0;endelseif(ena)casex(state)1'b0:beginopc_iraddr[15:8]<=data;state<=1;end1'b1:beginopc_iraddr[7:0]<=data;state<=0;enddefault:beginopc_iraddr[15:0]<=16'bx;state<=1'bx;endendcase elsestate<=1'b0;endendmodule17.3.3累加器resetclkload_accalu_out[7:0]moduleaccum(accum,data,ena,clk,rst);output[7:0]accum;input[7:0]data;inputena,clk,rst;reg[7:0]accum;always@(posedgeclk)beginif(rst)accum<=8'b0000_0000;elseif(ena)accum<=data;endendmodule17.3.4算术逻辑运算器助记符操作码功能HLT3'b000
暂停SKZ3‘b001累加器为零转移ADD3’b010加ANDD3‘b011与XORR3‘b100或LDA3‘b101取数STO3‘b110存数JMP3‘b111转移`timescale1ns/1nsmodulealu(alu_out,zero,data,accum,alu_ena,opcode,clk);output[7:0]alu_out;outputzero;input[7:0]data,accum;input[2:0]opcode;inputalu_ena,clk;reg[7:0]alu_out;parameterHLT=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@(posedgeclk)if(alu_ena)begincasex(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;endcaseend
endmodule17.3.5数据控制器data[7:0]alu_out[7:0]datactl_enamoduledatactl(data,in,data_ena);output[7:0]data;input[7:0]in;inputdata_ena;assigndata=(data_ena)?in:8'bz;endmodule17.3.6地址多路器moduleadr(addr,fetch,pc_addr,ir_addr);inputfetch;input[12:0]pc_addr,ir_addr;output[12:0]addr;assignaddr=fetch?pc_addr:ir_addr;endmodule17.3.7程序计数器modulecounter(pc_addr,ir_addr,load,clk,rst);inputload,clk,rst;input[12:0]ir_addr;output[12:0]pc_addr;reg[12:0]pc_addr;always@(posedgeclkorposedgerst) if(rst)pc_addr<=13'b0_0000_0000_0000;elseif(load)pc_addr<=ir_addr;elsepc_addr<=pc_addr+1;endmodule17.3.8状态控制器`timescale1ns/1nsmodulemachinectl(ena,fetch,rst,clk);inputfetch,rst,clk;outputena;regena;always@(posedgeclk)beginif(rst)ena<=0;elseif(fetch)ena<=1;endendmodule17.3.8状态控制器状态控制器两部分:状态机(machine)状态控制器machinectl rst有效,ena=0, 状态机停止工作。17.3.8状态控制器000001010011100101110111状态机是CPU的核心部件,用于产生控制信号:启动、停止某些部件CPU执行读指令来读写接口、存储器状态变量state的值,是指令周期已经过的时钟数指令周期中8个时钟完成的操作第0个时钟:rd和load_ir为高电平,ROM中高八位指令代码-->指令寄存器第1个时钟:rd和load_ir为高电平,inc_pc加1,故PC+1,ROM中低八位指令代码-->指令寄存器第2个时钟:空操作第3个时钟:PC+1,指向下一条指令;若HLT指令,halt=1;其它指令控制线输出为0指令周期中8个时钟完成的操作第4个时钟:若ANDADDXORLDA,读相应地址数据;若JMP,目的地址-->PC;若STO,输出累加器数据。第5个时钟:若ANDADDXOR,进行相应运算;若LDA,数据-->运算器-->累加器;若JMP,锁存目的地址;若STO,数据到地址处。第6个时钟:空操作第7个时钟:若SKZ指令,PC+1跳过一条指令;否则PC无变化`timescale1ns/1nsmodulemachine(inc_pc,load_acc,load_pc,rd,wr,load_ir,datactl_ena,halt,clk,zero,ena,opcode);outputinc_pc,load_acc,load_pc,rd,wr,load_ir;outputdatactl_ena,halt;inputclk,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@(negedgeclk)beginif(!ena)beginstate<=3'b000;{inc_pc,load_acc,load_pc,rd}<=4'b0000;{wr,load_ir,datactl_ena,halt}<=4'b0000;endelsectl_cycle;end
//-------beginoftaskctl_cycle-------taskctl_cycle;begincasex(state)3'b000:begin{inc_pc,load_acc,load_pc,rd}<=4'b0001;{wr,load_ir,datactl_ena,halt}<=4'b0100;state<=3'b001;end3'b001:begin{inc_pc,load_acc,load_pc,rd}<=4'b1001;{wr,load_ir,datactl_ena,halt}<=4'b0100;state<=3'b010;end
3'b010:begin{inc_pc,load_acc,load_pc,rd}<=4'b0000;{wr,load_ir,datactl_ena,halt}<=4'b0000;state<=3'b011;end
3'b011:beginif(opcode==HLT)begin{inc_pc,load_acc,load_pc,rd}<=4'b1000;{wr,load_ir,datactl_ena,halt}<=4'b0001;state<=3'b100;endelsebegin{inc_pc,load_acc,load_pc,rd}<=4'b1000;{wr,load_ir,datactl_ena,halt}<=4'b0000;state<=3'b100;endend3'b100:beginif(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;endelseif(opcode==STO)begin{inc_pc,load_acc,load_pc,rd}<=4'b0000;{wr,load_ir,datactl_ena,halt}<=4'b0010;endelsebegin{inc_pc,load_acc,load_pc,rd}<=4'b0000;{wr,load_ir,datactl_ena,halt}<=4'b0000;endstate<=3'b101;end
3'b101:begin//operationif(opcode==ADD||opcode==ANDD||opcode==XORR||opcode==LDA)begin{inc_pc,load_acc,load_pc,rd}<=4'b0101;{wr,load_ir,datactl_ena,halt}<=4'b0000;endelseif(opcode==SKZ&&zero==1)begin{inc_pc,load_acc,load_pc,rd}<=4'b1000;{wr,load_ir,datactl_ena,halt}<=4'b0000;endelseif(opcode==JMP)begin{inc_pc,load_acc,load_pc,rd}<=4'b1010;{wr,load_ir,datactl_ena,halt}<=4'b0000;endelseif(opcode==STO)begin{inc_pc,load_acc,load_pc,rd}<=4'b0000;{wr,load_ir,datactl_ena,halt}<=4'b1010;endelsebegin{inc_pc,load_acc,load_pc,rd}<=4'b0000;{wr,load_ir,datactl_ena,halt}<=4'b0000;endstate<=3'b110;end
3'b110://idlebeginif(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;end
3'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//-----------endoftaskctl_cycle--------------
endmodulecpuABDB地址译码器ROMRAMclockresetMICROCOMPUTERSYSTEMreadwrite17.3.9外围模块(地址译码器)moduleaddr_decode(addr,rom_sel,ram_sel);outputrom_sel,ram_sel;input[12:0]addr;regrom_sel,ram_sel;always@(addr)casex(addr)13'b1_1xxx_xxxx_xxxx:{rom_sel,ram_sel}<=2'b01;13'b0_xxxx_xxxx_xxxx:{rom_sel,ram_sel}<=2'b10;13'b1_0xxx_xxxx_xxxx:{rom_sel,ram_sel}<=2'b10;default:{rom_sel,ram_sel}<=2'b00;endcaseendmodule17.3.9外围模块(RAM)moduleaddr_decode(addr,rom_sel,ram_sel);outputrom_sel,ram_sel;input[12:0]addr;regrom_sel,ram_sel;always@(addr)casex(addr)13'b1_1xxx_xxxx_xxxx:{rom_sel,ram_sel}<=2'b01;13'b0_xxxx_xxxx_xxxx:{rom_sel,ram_sel}<=2'b10;13'b1_0xxx_xxxx_xxxx:{rom_sel,ram_sel}<=2'b10;default:{rom_sel,ram_sel}<=2'b00;endcaseendmodule17.3.9外围模块(ROM)modulerom(data,addr,read,ena);output[7:0]data;input[12:0]addr;inputena,read;reg[7:0]mem[13'h1fff:0];assigndata=(read&&ena)?mem[addr]:8'hzz;endmodule17.4RISC_CPU操作和时序主要操作:系统的复位和启动操作总线读操作总线写操作17.4.1系统的复位和启动操作复位状态reset=1:CPU内部寄存器全为零数据总线为高阻状态地址总线为0000H所有控制信号为无效状态启动状态reset=0:fetch上升沿启动CPU开始工作从ROM的000处读指令并执行17.4.2总线读操作复位状态reset=1:CPU内部寄存器全为零数据总线为高阻状态地址总线为0000H所有控制信号为无效状态启动状态reset=0:fetch上升沿启动CPU开始工作从ROM的000处读指令并执行D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0高8位低8位地址码指令码17.5RISC_CPU寻址方式和指令系统指令数目:8条地址空间:213=8K17.5RISC_CPU寻址方式和指令系统直接寻址方式数据放在存储器中,寻址单元的地址由指令直接给出。LDA010FH8EH00H77H56HEDHFFHFFH00H010FH010EH010DH010CH56H1010000100001111地址码指令码17.5RISC_CPU寻址方式和指令系统HLT:停机操作该操作空一个指令周期,即8个时钟SKZ:为零跳过下一条语句累加器结果为零,跳过下一语句;累加器结果不为零,顺序执行。ADD:相加累加器的值+地址所知的存储器中的数据,结果送回累加器。17.5RISC_CPU寻址方式和指令系统ANDD:相与累加器的值&地址所知的存储器中的数据,结果送回累加器。XORR:相异或累加器的值^地址所知的存储器中的数据,结果送回累加器。LDA:读数据地址所知的存储器中的数据送累加器。17.5RISC_CPU寻址方式和指令系统STO:写数据累加器中的数据送地址所指的存储器中JMP:无条件跳转语句该操作跳转至指令给出的目的地址,继续执行。累加器指令寄存器算逻单元数据控制地址选择程序计数器控制状态机时钟信号ABDBrdload_accfetchinc_pcload_iralu_enadataload_irrdinc_pcalu_enafetchclk01234567LDA1000B000EE0110001001RAMEEload_accaddress000000011000B00000000001ROM0000020002累加器指令寄存器算逻单元数据控制地址选择程序计数器控制状态机时钟信号ABDBrdload_accfetchinc_pcload_iralu_enadataload_irrdinc_pcalu_enafetchclk01234567ADD10015001EE1110001001RAM11load_accaddress000200031001500100020003ROM00040004累加器指令寄存器算逻单元数据控制地址选择程序计数器控制状态机时钟信号ABDBrdload_accfetchinc_pcload_iralu_enadataload_irrdinc_pcalu_enafetchclk01234567STO1001D001EE0110001001RAMFFwraddress000400051001D00100040005ROM00060006@00111_00000//00BEGIN:JMPTEST_JMP0011_1100000_00000//02HLT0000_0000000_00000//04HLT0000_0000101_11000//06JMP_OK:LDADATA_10000_0000001_00000//08SKZ0000_0000000_00000//0AHLT0000_0000101_11000//0CLDADATA_20000_0001001_00000//0ESKZ0000_0000111_00000//10JMPSKZ_OK0001_0100000_00000//12HLT0000_0000110_11000//14SKZ_OK:STOTEMP0000_0010101_11000//16LDADTAT_10000_0000110_11000//18STOTEMP0000_0010101_11000//1ALDATEMP0000_0010001_00000//1CSKZ0000_0000000_00000//1EHLT0000_0000100_11000//20XORRDTAT_20000_0001001_00000//22SKZ0000_0000000_00000//24HLT0000_0000111_00000//26JMPXORR_OK0010_0100100_11000//28XORR_OK:XORRDATA_20000_0001001_00000//2ASKZ0000_0000000_00000//2CHLT0000_0000000_00000//2EEDN:HLT0000_0000111_00000//30JMPBEGIN0000_0000@3C111_00000//3CTST_JMP:JMPJMP_OK0000_0110000_00000//3EHLTROM@0000000000//1800DATA_111111111//1801DATA_210101010//1802TEMP
RAM17.6RISC_CPU模块的调试cpuABDB地址译码器ROMRAMclockresetreadwrite`include"clk_gen.v"`include"register.v"`include"accum.v"`include"adr.v"`include"alu.v"`include"machine.v"`include"machinectl.v"`include"counter.v"`include"datactl.v"`timescale1ns/1nsmodulecpu(clk,reset,halt,rd,wr,addr,data,opcode,fetch,ir_addr,pc_addr);inputclk,reset;outputrd,wr,halt;output[12:0]addr;output[2:0]opcode;outputfetch;output[12:0]ir_addr,pc_addr;inout[7:0]data;wireclk,reset,halt;wire[7:0]data;wire[12:0]addr;wirerd,wr,wirefetch,alu_ena;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,contrl_ena;endmodulemodulecpu(clk,reset,halt,rd,wr,addr,data,opcode,fetch,ir_addr,pc_addr);
clk_genm_clkgen(.clk(clk),.reset(reset),.fetch(fetch),.alu_ena(alu_ena));registerm_register(.data(data),.ena(load_ir),.rst(reset),.clk(clk),.opc_iraddr({opcode,ir_addr}));accumm_accum(.data(alu_out),.ena(load_acc),.clk(clk),.rst(reset),.accum(accum));alum_alu(.data(data),.accum(accum),.clk(clk),.alu_ena(alu_ena),.opcode(opcode),.alu_out(alu_out),.zero(zero));machinectlm_machinectl(.clk(clk),.rst(reset),.fetch(fetch),.ena(contrl_ena));machinem_machine(.inc_pc(inc_pc),.load_acc(load_acc),.load_pc(load_pc),.rd(rd),.wr(wr),.load_ir(load_ir),.clk(clk),.datactl_ena(data_ena),.halt(halt),.zero(zero),.ena(contrl_ena),.opcode(opcode));datactlm_datactl(.in(alu_out),.data_ena(data_ena),.data(data));adrm_adr(.fetch(fetch),.ir_addr(ir_addr),.pc_addr(pc_addr),.addr(addr));counterm_counter(.clk(inc_pc),.rst(reset),.ir_addr(ir_addr),.load(load_pc),.pc_addr(pc_addr));
endmodule`include"cpu.v"`include"ram.v"`include"rom.v"`include"addr_decode.v"`timescale1ns/1ns`definePERIOD100moduletopcpu;regreset_req,clock;integertest;reg[(3*8):0]mnemonic;reg[12:0]PC_addr,IR_addr;wire[7:0]data;wire[12:0]addr;wirerd,wr,halt,ram_sel,rom_sel;wire[2:0]opcode;wirefetch;wire[12:0]ir_addr,pc_addr;……..endmodulemoduletopcpu;regreset_req,clock;…….cput_cpu(.clk(clock),.reset(reset_req),.halt(halt),.rd(rd),.wr(wr),.addr(addr),.data(data),.opcode(opcode),.fetch(fetch),.ir_addr(ir_addr),.pc_addr(pc_addr));ramt_ram(.addr(addr[9:0]),.read(rd),.write(wr),.ena(ram_sel),.d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东女子学院《外科学总论(含手术学)》2023-2024学年第二学期期末试卷
- 民办合肥滨湖职业技术学院《工程材料及其成形技术基础》2023-2024学年第二学期期末试卷
- 店铺监控施工方案
- 两条例两准则培训
- 幼儿园获奖公开课:中班体育活动《小花做游戏》课件
- 护理管理工具甘特图
- 三级安全教育培训内容
- 学校安全宣传教育
- 学校金融学课件
- 2024-2025学年下学期高三英语人教版同步经典题精练之翻译题
- 2025年4月自考15040习概押题及答案
- 园林花卉 课件 第三篇1单元 一二年生花卉
- 【初中生物】植物在自然界中的作用 2024-2025学年七年级生物下学期课件(人教版2024)
- 2024年安庆市迎江区招聘社区人员考试真题
- 燃气工程AI智能应用企业制定与实施新质生产力战略研究报告
- 2025届福建省质检高三适应性练习英语试卷(含答案和音频)
- 中医适宜技术-中药热奄包
- 浙江省J12共同体联盟校2023-2024学年八年级下学期期中科学试卷
- 重庆邮电大学本科毕业设计(论文)参考模板-2020版
- 精华版)粉末涂料异常问题及处理措施汇总
- 驻场合同范本
评论
0/150
提交评论