• 基于M9K块的单口RAM配置仿真实验


    FPGA器件中通常嵌入一些用户可配置的存储块,Altera的Cyclone系列器件也不例外。Cyclone器件的嵌入式称之为M4K存储块,这些存储块是独立于FPGA本身的逻辑资源的。也就是说如果用户只使用这些存储器,那么FPGA中的纯逻辑资源消耗可以为零。Cycone的M4K不仅不消耗额外的FPGA逻辑资源,而且可以拿来当RAM用的,标称速率可以达到250M,这个速率不是在cyclone系列的每个器件都能达到,资源少如EP1C3估计就困难,但100M的读写速度还是没有问题的.

    一、实验步骤

    三、TestBench编写

    `timescale 1 ns/ 1 ns
    module m9kram_vlg_tst();

    reg clk;
    reg [11:0] ram_addr;
    reg [7:0] ram_din;
    reg ram_wr;
    reg rst_n;                                     
    wire [7:0]  ram_dout;                     
    m9kram i1 (

     .clk(clk),
     .ram_addr(ram_addr),
     .ram_din(ram_din),
     .ram_dout(ram_dout),
     .ram_wr(ram_wr),
     .rst_n(rst_n)
    );
    initial                                               
    begin                                                 
    rst_n=0;
    ram_wr=0;  
    ram_addr=12'hzzz;
    ram_din=8'hzz;
    #200;
    rst_n=1;

    #3_000; //Delay 3us

    task_wr_ram(12'd0, 8'd0); //address 0 write 0  
    task_wr_ram(12'd1, 8'd1);  //address 1 write 1
    task_wr_ram(12'd2, 8'd2);  //address 2 write 2
    task_wr_ram(12'd3, 8'd3);  //address 3 write 3              

    @(posedge clk); 
    ram_addr=12'd0; //read address 0
    @(posedge clk); 
    ram_addr=12'd0; //read address 1
    @(posedge clk);
    ram_addr=12'd0; //read address 2
    @(posedge clk);
    ram_addr=12'd0; //read address 3
    #100;
    $stop;
    end  

    initial begin
    clk=0;
    forever
    #5 clk=~clk;
    end   
    //write ram task                                            
    task task_wr_ram;
    input[11:0] t_addr;
    input[7:0] t_data;
    begin
    @(posedge clk);
    fork
    ram_wr=1;
    ram_addr=t_addr;
    ram_din=t_data;
    join
    @(posedge clk);
    fork
    ram_wr=0;
    ram_addr=12'hzzz;
    ram_din=8'hzz;
    join
    end
    endtask               
    endmodule

    四、ModelSim仿真

    五、fork...join的用法

    如果希望在仿真的某一时刻同时启动多个任务,可以使用fork....join语句。例如,在仿真开始的 100 ns 后,希望同时启动发送和接收任务,而不是发送完毕后再进行接收,如下所示:

    initial
    begin
      #100 ;
      fork /*并行执行 */
    Send_task ;
    Receive_task ;
      join
    End

  • 相关阅读:
    关于亮剑,文化大革命的一点感想
    iOS -- block
    runtime -- 方法交换的坑自定义方法不执行
    iOS-UITableViewCell
    iOS debug模式
    iOS 将storybord中的视图与viewcontroller相关联
    gitignore的编写规则
    使用cocopods安装Alamofire后各种报错
    ReactNative--坑--'React/RCTBridgeModule.h' file not found
    12-2描点 学完路径可以对整个工具条做个概括 绘图类已完成
  • 原文地址:https://www.cnblogs.com/spartan/p/2032056.html
Copyright © 2020-2023  润新知