|  | 
 
| 
大家好
×
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册  我现在做了一个简单的8bit的处理器
 处理器一共由8个模块构成他们分别是:
 U1:tri-stage(数据控制器) U2:accumulator(累加器) U3:register(指令寄存器) U4:ALU(算数器) U5:control logci(状态控制) U6 PG counter(程序计数) U7 multiplexer(地址多路器)
 
 处理器的名字叫hibikino,下面是hibikino的模块记述
 //..............................................hibi kino code........................................//
 module hibikino (data,addr,clock,reset,halt,mem_wr,mem_rd);
 input [7:0] data;
 input clock,reset;
 output halt,mem_wr,mem_rd;
 output [4:0] addr;
 wire [7:0] data,accum,alu_out;
 wire [4:0] addr,ir_addr,pc_addr;
 wire [2:0] opcode;
 
 ts U1 (.accum(accum),.data(data),.data_en(data_en));
 register U2 (.clock(clock),.reset(reset),.control(load_ac),.ou t(accum),.in(alu_out));
 register U3 (.clock(clock),.reset(reset),.in(data),.control(lo ad_ir),.out({opcode,ir_addr}));
 alu U4 (.alu_out(alu_out),.zero(zero),.data(data),.accum( accum),.opcode(opcode));
 
 ctltop U5 (.zero(zero),.opcode(opcode),.clock(clock),.reset( reset),.halt(halt),.mem_wr(mem_wr),.mem_rd(mem_rd) ,
 .load_ir(load_ir),.load_pc(load_pc),.inc_pc(inc_pc ),.load_ac(load_ac),.data_en(data_en),.fetch(fetch ));
 
 counter U6 (.clock(clock),.reset(reset),.load_pc(load_pc),.in c_pc(inc_pc),.pc_addr(pc_addr),.ir_addr(ir_addr));
 mux U7 (.ir_addr(ir_addr),.pc_addr(pc_addr),.fetch(fetch) ,.addr(addr));
 
 
 endmodule
 //..............................................hibi kino code........................................//
 
 hibikino处理器的外围模块只有一个RAM,时钟信号准备由testbench给予。
 RAM的功能代码暂时是这么写的,其中数据总线只有一条。读写信号分开。
 //..............................................RAM code..........................................//
 module ram(addr,mem_rd,mem_wr,data);
 inout [7:0] data;
 input [4:0] addr;
 input mem_rd,mem_wr;
 reg [7:0] mem[0:300];
 
 
 assign data = (mem_rd)? mem[addr] : 8'bzzzzzzzz;
 
 always @(posedge mem_wr)begin
 mem[addr]<=data;
 end
 endmodule
 //..............................................RAM code..........................................//
 
 现在的问题是,我有一个简单的汇编程序,老师让我直接在RAM的功能代码里输入。我想请教大家具体应该怎么记述?
 汇编程序的代码贴给大家
 //........................RAM's instruction area.................................//
 00 JMP  03                    //00:表示地址 JMP:命令 03:指向地址
 01
 02
 03 LDA  1B
 04 STO  1C
 05 ADD  1A
 06 STO  1B
 07 LDA  1C
 08 STO  1A
 09 XOR  1D
 0A SKZ
 0B JMP   03
 0C HALT
 //........................RAM's instruction area.................................//
 上述这个简单的汇编程序,经过13个周期 HALT就会被触发,导致整个程序停止运行
 
 下面是保存在RAM数据区域的初期值
 //........................RAM's data area.................................//
 1A    1
 1B    0
 1C    1
 1D    144
 //........................RAM's data area.................................//
 
 
 ps  不是建立一个hex文件 然后用¥ readmemb(。。。。)这个指令,我是想把汇编程序直接输入进RAM中,然后把RAM和hibikino处理器整个进行testbench。还有hibikino中的每个模块都已经testbench了,基本都没问题。
 | 
 |