扩展(计组)


module rom_1k_8b( addr, din, RW,CS, clk, dout );
     input  [9:0] addr;
 input  [7:0] din;
     input         RW;   //写允许
    input         clk;
    input         CS;    //片选
    output [7:0] dout;
    
    reg [7:0] mem[1023:0];//1024个,8位
  always @(posedge clk)
   begin
     if (RW==1 && CS==1)
        mem[addr] <= din;
   end                             // end always
   assign dout =(CS==1)? mem[addr]:8'bzzzzzzzz;
endmodule


module rom_2k_8b(addr,din,RW,CS,clk,dout);
input [10:0] addr;
input [7:0] din;
input RW;
input clk;
input CS;
output [7:0] dout;
wire CS0,CS1;

wire [7:0] dout1,dout0;
assign CS0=CS&addr[10];
assign CS1=~addr[10]&CS;
rom_1k_8b uO(.addr(addr[9:0]),.din(din),.RW(RW),.CS(CSO),.clk(clk),.dout(dout0));
rom_1k_8b u1(.addr(addr[9:0]),.din(din),.RW(RW),.CS(CS1),.clk(clk),.dout(dout1));
assign dout=addr[10]?dout1:dout0;
endmodule
 


module rom_2k_8b_tb(
    );
    reg [9:0] addr;
    reg [7:0] din;
    reg RW,CS, clk;
    wire [7:0] dout;
    rom_2k_8b u0(addr, din, RW,CS, clk, dout);
    initial
    begin
    addr=11'b0000000000;din=8'b11000001;RW=1'b1;CS=1'b1;clk=0;
    #50
    RW=1'b0;
    #20
    din=8'b11111111;
    #100
    addr=11'b1000000001;din=8'b11111011;RW=1'b1;
    #100
    RW=1'b0;addr=11'b1000000000;
    #30
    addr=11'b0000000000;
    #200
    CS=1'b0;
    end
    always #10 clk=~clk;
endmodule

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值