当前位置:   article > 正文

FPGA片内RAM读写代码示例_fpga寄存器文件怎么写

fpga寄存器文件怎么写

RAM(Random Access Memory),也就是随机存取寄存器,它可以随时把数据数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据,其读写速度是由时钟频率决定的。
在本例程汇总,实现了向RAM里面写入1024个数据,然后再读取出来,通过ILA(在线逻辑分析仪)进行查看。

1、新建工程

器件选择Zynq 7000系列中的xc7z030ffg676-2,其他按默认选项。
在这里插入图片描述
在Design source中,选择“+”来生成代码文件。
在这里插入图片描述
创建一个RAM_TOP文件,并且选择Verilog格式。
在这里插入图片描述
创建完成后,可以看到Design Sources文件夹中有一个RAM_TOP.v文件,这就是需要编写verilog程序的文件。
在这里插入图片描述
添加RAM IP到工程,如下图:
在这里插入图片描述
RAM IP配置如下(其他默认):
在这里插入图片描述
[在这里插入图片描述
添加ILA IP到工程,如下图:
在这里插入图片描述
ILA IP配置如下(其他默认):
在这里插入图片描述
在这里插入图片描述
双击RAM_TOP文件,添加代码如下:

module RAM_TOP(
input clk_p,
input clk_n,
input rst
    );
    
    wire clk;
    
    IBUFDS #(
    .DIFF_TERM("FALSE"),
    .IBUF_LOW_PWR("TRUE"),
    .IOSTANDARD("DEFAULT")
    ) IBUFDS_inst(
    .O(clk),
    .I(clk_p),
    .IB(clk_n)
    );
    
     wire  ena;
    reg  [0:0] wea;
    reg  [9:0] addra;
    reg  [15:0] dina;
    wire [15:0] douta;
    
    assign ena = rst;
    
    reg [2:0] ram_state;
    always @(posedge clk or negedge rst)
      if(!rst) begin
        ram_state <= 'b0;
        wea <= 'b1;
        addra <= 'b0;
        dina <= 'b0;
      end
      else begin
        case(ram_state)
             'b0:  begin
                   if(addra < 1023) begin
                     wea <= 'b1;
                     addra <= addra + 'b1;
                     dina <= dina + 'b1;
                   end
                   else begin
                     ram_state <= 'b1;
                     wea <= 'b0;
                     addra <= 'b0;
                     dina <= 'b0;
                   end
                  end
              'b1:  begin
                    if(addra < 1023) begin
                       wea <= 'b0;
                       addra <= addra + 'b1;                     
                    end
                    else begin
                      ram_state <= 'b0;
                      wea <= 'b1;
                      addra <= 'b0;
                      dina <= 'b0;
                   end
                  end
                default: begin
                      ram_state <= 'b0;
                      wea <= 'b0;
                      addra <= 'b0;
                      dina <= 'b0;
                end
              endcase
      end
      
      blk_mem_gen_0 u0 (
      .clka(clk),    // input wire clka
      .ena(ena),      // input wire ena
      .wea(wea),      // input wire [0 : 0] wea
      .addra(addra),  // input wire [9 : 0] addra
      .dina(dina),    // input wire [15 : 0] dina
      .douta(douta)  // output wire [15 : 0] douta
      );

     ila_0 u1 (
    .clk(clk), // input wire clk

	.probe0(ena), // input wire [0:0]  probe0  
	.probe1(wea), // input wire [0:0]  probe1 
	.probe2(addra), // input wire [9:0]  probe2 
	.probe3(dina), // input wire [15:0]  probe3 
	.probe4(douta) // input wire [15:0]  probe4
    );
endmodule
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89

2、添加管脚约束文件

在Design Sources中选择“+”,在“Add Sources”对话框中选择添加约束文件main.xdc。
在这里插入图片描述
文件类型默认为xdc。
在这里插入图片描述
在Design Sources中点击main.xdc进行编辑。
在这里插入图片描述
约束文件代码如下:

set_property IOSTANDARD lVDS [get_ports clk_p]
set_property PACKAGE_PIN C8 [get_ports clk_p]

set_property IOSTANDARD SSTL135 [get_ports rst]
set_property PACKAGE_PIN G9 [get_ports rst]
  • 1
  • 2
  • 3
  • 4
  • 5

3、编译并生成bit文件

点击Flow Navigator中的Generate Bitstream,等待生成bit文件。
在这里插入图片描述
bit文件生成成功。
在这里插入图片描述

4、加电测试

连接仿真器,给设备加电。
注意:为了延长仿真器的使用时间,尽可能不要带电插拔仿真器。
点击Flow Navigator——>PROGRAM AND DEBUG——>Open Hardware Manager——>Open Target,在弹出界面上点击Auto Connect。
在这里插入图片描述
在HardWare的xc7z030_1上点击右键,选择Program Device…
在这里插入图片描述
选择刚刚生成的bit文件和ltx文件,点击Program。
在这里插入图片描述
下载完成后,自动跳出ILA界面,点击界面上的“》”即可开始抓取信号。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/509821
推荐阅读
相关标签
  

闽ICP备14008679号