首页 > 其他分享 >IP-RAM

IP-RAM

时间:2024-02-07 22:24:35浏览次数:21  
标签:wea IP RAM 数据位 output reg

Untitled.png

Vivado软件自带的Block Memory Genrator IP核可以用来配置生成RAM和ROM,生成的RAM和ROM使用的都是FPGA内部的BRAM资源

Vivado IP核配置

Untitled.png

  1. 读数据位宽要与写数据位宽成整数倍关系
  2. Port A Optional Register:用于为RAM的输出端添加寄存器,提高BRAM的运行频率和改善时序,每勾选一个寄存器,输出会延迟一拍

地址信号和写信号的生成

module ram_rv (
    clk,
    rst_n,
    ena,
    wea,
    addr,
    din
);
    input clk;
    input rst_n;
    output reg ena;
    output reg [7:0] din;
    output reg [4:0] addr;
    output wea;
    reg [5:0] cnt;

    assign wea=(cnt<=6'd31&&ena==1)?1'b1:1'b0;

    always @(posedge clk or negedge rst_n) begin
        if(rst_n==1'b0)
            ena<=1'b0;  
        else
            ena<=1'b1;
    end

    always @(posedge clk or negedge rst_n) begin
        if(rst_n==1'b0)
            cnt<=6'b0;
        else if(cnt==63&&ena==1'b1)
            cnt<=6'b0;
        else if(ena==1'b1)
            cnt<=cnt+1'b1;
        else
            cnt<=6'b0;
    end

    always @(posedge clk or negedge rst_n) begin
        if(rst_n==1'b0)
            addr<=5'b0;
        else if(addr==5'd31&&ena==1'b1)
            addr<=5'b0;       
        else if(ena==1'b1)
            addr<=addr+1'b1;
        else begin
            addr<=5'b0;
        end
    end
    
    always @(posedge clk or negedge rst_n) begin
    if(rst_n==1'b0)
    begin
        din<=8'b0;
    end
    else if(din<8'd31 && wea==1'b1) begin
        din<=din+1'b1;
    end
    else begin
        din<=8'b0;
    end
end
endmodule

波形

Untitled.png

当WEA为高电平时,根据地址信号向RAM中写入数据

Untitled.png

WEA为低电平时,读出RAM中的信号

标签:wea,IP,RAM,数据位,output,reg
From: https://www.cnblogs.com/sawen/p/18011382

相关文章

  • Nginx白名单IP限制、国家城市IP访问限制
    文章来源:https://spring4all.com/forum-post/6059.html1.方法一:allow、denydeny和allow指令属于ngx_http_access_module,nginx默认加载此模块,所以可直接使用。这种方式,最简单,最直接。设置类似防火墙iptable,使用方法:直接配置文件中添加:#白名单设置,allow后面为可访问IPlocatio......
  • TypeScript 设计模式之发布订阅者模式
    订阅发布模式(Publish-SubscribePattern)是一种行之有效的解耦框架与业务逻辑的方式,也是一种常见的观察者设计模式,它被广泛应用于事件驱动架构中。在这个模式中,发布者(或者说是主题)并不直接发送消息给订阅者,而是通过调度中心(或者叫消息代理)来传递消息。发布者(或者说是主题)并不知道订......
  • javascript 下载 application/octet-stream 文件
    functiondownloadFile(id){varxhr=newXMLHttpRequest();xhr.open('POST','https://localhost/api/app/isp-detection/'+id+'/download');xhr.responseType='blob';xhr.setRequestHeader('Cont......
  • android FrameLayout、LinearLayout和RelativeLayout的学习
    一、FrameLayout目的:FrameLayout是一个设计用来存放单个子项的简单容器。它通常被用来堆叠视图,即将多个元素重叠在一起。布局:子视图堆叠在一起,默认情况下都是放置在左上角,但可以通过android:layout_gravity属性改变子视图的位置。性能:由于FrameLayout结构简单,所以相对来说比较......
  • [AGC041F] Histogram Rooks 题解
    题目链接点击打开链接题目解法好牛(难)的题!!!所有都被覆盖不难想到容斥暴力的容斥是钦定集合\(S\)中的位置都没被覆盖,然后把不能填棋子的点都去掉,假设剩下的不受限制的点的个数为\(c\),则答案为\(\sum2^c(-1)^{|S|}\)这个暴力是很难直接优化的如果一列被有点被钦定了,那么......
  • 【洛谷 P2670】[NOIP2015 普及组] 扫雷游戏 题解(模拟)
    [NOIP2015普及组]扫雷游戏题目背景NOIP2015普及组T2题目描述扫雷游戏是一款十分经典的单机小游戏。在行列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的......
  • 新华三NX54关闭IPV6防火墙
    背景由于官方固件中没有防火墙的选项,无法开启关闭,或者指定端口放行,所以只能用telnet操作光猫开启桥接模式,并关闭IPV6防火墙这一步网上教程很多,需要用超级管理员账号登录光猫的后台,把拨号改为桥接,然后开启ipv6并关闭ipv6的防火墙光猫改为桥接后路由器会上不了网,需要到路由器......
  • Rockchip RK3399 - PCIe
    一、PCIe调试1.1编译内核1.1配置设备树pcie设备节点定义在arch/arm64/boot/dts/rockchip/rk3399.dtsi;pcie0:pcie@f8000000{ compatible="rockchip,rk3399-pcie"; reg=<0x00xf80000000x00x2000000>, <0x00xfd0000000x00x1000000>; reg-names=......
  • 经典Prompt欣赏 - Video Script Generator 视频脚本生成器
    体验可以通过https://chat.openai.com/g/g-rxlwmrnqa-video-script-generator地址体验,它将按照你的主题要求,创建TikTok视频脚本。PromptYouareanexpertinthefieldoftopic,whowantstocreateengagingandinformativecontentforTikTok.Youraudienceconsi......
  • 解决编译报错——too few arguments for template template parameter “Tuple“detec
    一般出现这种问题都是cuda、pytorch和vs版本没配对上。这里出现问题的文件为torch中的cast.h。我看网上很多给的解决方法是修改下面代码:template<template<typename...>classTuple,typename...Ts>classtuple_caster;template<typenameT1,typenameT2>classtyp......