欢迎FPGA工程师加入官方微信技术群

点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群

本实验基于xilinx ARTIX-7芯片验证实现,有时间有兴趣的朋友可在其他FPGA芯片上实现验证。
当大家看到《xilinx verilog语法技巧(三)–RAM的初始化》文章的时候很多人认为initial语句,$readmemb语句均是不可综合语句(只能用来写测试文件),但是xilinx的综合器已经悄然改变了这一点。
rams_init_file源码:

// Initializing Block RAM from external data file// Binary data// File: rams_init_file.v

module rams_init_file (clk, we, addr, din, dout);input clk;input we;input [5:0] addr;input [31:0] din;output [31:0] dout;

reg [31:0] ram [0:63];reg [31:0] dout;

initial begin$readmemb("rams_init_file.data",ram);end

always @(posedge clk)beginif (we)     ram[addr] <= din;  dout <= ram[addr];end endmodule

rams_init_file.data源文件:

00001110110000011001111011000110001010110010110101010010001000110111010001010001100001110000111101000001010000100101001110010100000010011010011111111010001010110010110100101111111010101010011111101111000100111000111101101101100011110100100110010000111011110000000110001110001111001001111111011111001110101011111001001010111001110101001111101100110010101100010000100110110011110010100110001011100101011111111111100001111101011101100100000101101110100100101100000011100101011010111011100001111111001010111010011110011011110110100101000011011100010101010001101111100001100010010011110000111101101111001100001011101011010011110101001001000111000101110000101011111110111010111001011101000100100111010010110101111101110001000001010111011011011110011111000111101010110000110101110100000011101111111000011111000100111101011110001110010111010110111000111110001101010110111110111100000000010011101011011011110000010011010011011111000100000001111111001011011001111101010101100100100000011100100101110000100010000001001110110010100011111100100010001110100101000110000110000000100111010011100111100011110111110100101000101010100001111000000011011110100011111011101110110011010111101111000110011001000101111000010010101101110111001001110010111010111101101011001101010011101101010001110110011010011110110111000101010001010000011000100000011001011011100110101011101000001101010000111001010110111000111111000001111101011101010100101000000000111111110110111100100011000011001000000010001111100110001110101100010010111001001111111111101111010100010100011111000011000101000011100110100000011011010010111110101000111010011000011110110010100111001101011111010110100100101110110010100100010011111110011011010111110010111101100100110111011000010011011110110110110111100101110011100110100111001110010000101111110101100000000000101101111100101011001010100110011010000010001000011011110010101111110010011100011101010010000110001000011100010100100000111100101111110001101101111010110000100010100000000101001000011100000100011000110100010100111010010011010100010001100100100111

tb_rams_init_file测试顶层文件:

`timescale 1ns / 1psmodule tb_rams_init_file(       input clk,       input reset,       output [2:0] led_rgb0,       output [2:0] led_rgb1,       output [2:0] led_rgb2,       output [2:0] led_rgb3);reg [5:0] addr;wire  [31:0] dout;reg [27:0] cnt;

assign led_rgb0 = dout[2:0];assign led_rgb1 = dout[5:3];assign led_rgb2 = dout[8:6];assign led_rgb3 = dout[11:9];

always @(posedge clk ) beginif(reset==1'b1) begin    cnt   <= 28'd0;    addr <= 0;  endelse if(cnt == 28'd100000000)begin//1s    cnt <= 28'd0;    addr <= addr +1;  endelse begin    cnt   <= cnt + 1;    addr <= addr;  endendrams_init_file u_rams_init_file(.clk(clk), .we(1'b0), .addr(addr), .din(32'b0), .dout(dout));endmodule

约束文件(根据自己板卡):

set_property PACKAGE_PIN E3 [get_ports clk]set_property IOSTANDARD LVCMOS33 [get_ports clk]

set_property PACKAGE_PIN D9 [get_ports reset]set_property IOSTANDARD LVCMOS33 [get_ports reset]

set_property PACKAGE_PIN E1 [get_ports led_rgb0[0]]set_property IOSTANDARD LVCMOS33 [get_ports led_rgb0[0]]

set_property PACKAGE_PIN G6 [get_ports led_rgb0[1]]set_property IOSTANDARD LVCMOS33 [get_ports led_rgb0[1]]

set_property PACKAGE_PIN F6 [get_ports led_rgb0[2]]set_property IOSTANDARD LVCMOS33 [get_ports led_rgb0[2]]

set_property PACKAGE_PIN G4 [get_ports led_rgb1[0]]set_property IOSTANDARD LVCMOS33 [get_ports led_rgb1[0]]

set_property PACKAGE_PIN G3 [get_ports led_rgb1[1]]set_property IOSTANDARD LVCMOS33 [get_ports led_rgb1[1]]

set_property PACKAGE_PIN J4 [get_ports led_rgb1[2]]set_property IOSTANDARD LVCMOS33 [get_ports led_rgb1[2]]

set_property PACKAGE_PIN H4 [get_ports led_rgb2[0]]set_property IOSTANDARD LVCMOS33 [get_ports led_rgb2[0]]

set_property PACKAGE_PIN J3 [get_ports led_rgb2[1]]set_property IOSTANDARD LVCMOS33 [get_ports led_rgb2[1]]

set_property PACKAGE_PIN J2 [get_ports led_rgb2[2]]set_property IOSTANDARD LVCMOS33 [get_ports led_rgb2[2]]

set_property PACKAGE_PIN K2 [get_ports led_rgb3[0]]set_property IOSTANDARD LVCMOS33 [get_ports led_rgb3[0]]

set_property PACKAGE_PIN K1 [get_ports led_rgb3[1]]set_property IOSTANDARD LVCMOS33 [get_ports led_rgb3[1]]

set_property PACKAGE_PIN H6 [get_ports led_rgb3[2]]set_property IOSTANDARD LVCMOS33 [get_ports led_rgb3[2]]

测试效果:

视频结果展示

欢迎通信工程师和FPGA工程师关注公众号

全国第一大FPGA微信技术群

欢迎大家加入全国FPGA微信技术群,这个群体拥有数万工程师、一群热爱技术的工程师,这里的FPGA工程师相互帮助,相互分享,技术氛围浓厚!赶紧叫上小伙伴一起加入吧!

用手指按住就可以加入FPGA全国技术群哦

FPGA之家元器件芯城

优势元器件服务,有需求请扫码联系群主:金娟 邮箱:293580331@qq.com 欢迎推荐给采购

ACTEL、AD部分优势订货(经营全系列):

XILINX、ALTERA优势现货或订货(经营全系列):

(以上器件为部分型号,更多型号请咨询群主金娟)

服务理念:FPGA之家元器件自营芯城,旨在方便工程师快速方便购买器件服务,经过数年竭诚服务,我们的客服遍布国内大型上市公司、军工科研单位、中小企业、最大的优势是强调服务至上的理念、并且做到快速交货、价格优惠!

直营品牌:Xilinx ALTERA ADI TI NXP ST E2V、镁光 等百余元器件品牌,尤其擅长欧美对华禁运器件,欢迎工程师朋友把我们推荐给采购或者亲自咨询我们!我们将一如既往提供业内最佳服务!

FPGA技术群官方鸣谢品牌:Xilinx、 intel(Altera)、microsemi(,Actel)、LattIC e,Vantis,Quicklogic,Lucent等

.net get set 初始化_RAM初始化的下板验证(Xilinx)相关推荐

  1. 涉及到整型参数时,没有初始化时,Debug下可以运行,但是Release下不行

    涉及到整型参数时,没有初始化时,Debug下可以运行,但是Release下不行 是因为Debug给它默认赋值是0了,而Release下不会默认

  2. 【Android FFMPEG 开发】FFMPEG 初始化 ( 网络初始化 | 打开音视频 | 查找音视频流 )

    文章目录 I . FFMPEG 初始化流程 II . FFMPEG 网络初始化 avformat_network_init() III . FFMPEG 打开媒体地址 avformat_open_in ...

  3. php对多个变量进行初始化,PHP如何对变量进行初始化和初始化

    PHP如何对变量进行初始化和初始化 发布时间:2020-06-26 18:10:48 来源:亿速云 阅读:158 作者:Leah PHP如何对变量进行初始化和初始化?针对这个问题,这篇文章详细介绍了相 ...

  4. java web 初始化方法_Java Web(二) 类的初始化及初始化顺序

    1. 问题点 最近在写单例模式的时候碰到了@Autiwired注解注入为NULL的情况,研究一番,发现是和类的初始化顺序有关.先抛出我的问题: //异步处理 public class AsyncMan ...

  5. [C++11]统一的数据初始化方式 - 初始化列表

    关于C++中的变量,数组,对象等都有不同的初始化方法,在这些繁琐的初始化方法中没有任何一种方式适用于所有的情况.为了统一初始化方式,并且让初始化行为具有确定的效果,在C++11中提出了列表初始化的概念 ...

  6. 实战证明LINUX系统下密钥对验证的安全性

    实战证明LINUX系统下密钥对验证的安全性  密钥对验证:要求提供匹配的密钥信息才能通过验证,首先在客户端创建一对密钥文件(公钥.私钥),后把公钥文件放到需要远程连接的服务器中.远程登录时,系统将使用 ...

  7. 关于瞬时功率的无功功率和有功功率,在不同坐标系下的验证

    关于瞬时功率的无功功率和有功功率,在不同坐标系下的验证

  8. 第五篇:mig读写时序下板实现

    FPGA开源工作室将通过五篇文章来给大家讲解xilinx FPGA 使用mig IP对DDR3的读写控制,旨在让大家更快的学习和应用DDR3. 本实验和工程基于Digilent的Arty Artix- ...

  9. 飞腾S2500平台PCIe SWITCH下热插拔验证

    飞腾S2500平台PCIe SWITCH下热插拔验证 插拔前主板PCIe设备情况 对PCIe外设进行热插拔 对PCIe外设进行重新枚举,并分配资源 对新的PCIe外设进行功能测试 插拔前主板PCIe设 ...

最新文章

  1. mysql 学习笔记07日期相关函数01
  2. ?php echo $this-_里面怎么加入图片地址,PHP如何获取图片同时展现在页面上?
  3. kratos import 飘红问题
  4. 在NAS上基础构建云存储系统的两种解决方案
  5. struts2文件下载
  6. Python入门-行和缩进
  7. 词云中去重复的词_今天从零教你开始利用Python打造词云图!
  8. 详解如何在数仓中管理元数据(文末彩蛋~)
  9. vcpkg 详细介绍
  10. 百度下拉关键词刷?具体步骤及方法
  11. 微吼直播 html5,微吼直播jssdk接入指引.pdf
  12. Phyton Socket发送接收Modbus数组
  13. java gsoap mtom_mtom_xop 通过gsoap实现高效MTOM协议的数据传输 - 下载 - 搜珍网
  14. 2014年FME校园培训考核通过名单
  15. BandZIP无广告版(v6.25)安装及禁止联网设置
  16. [Linux-网络性能测试] -- netperf测试
  17. 【摸鱼神器】基于python的BOSS识别系统
  18. python壁纸4k_Python爬取4k高清动漫壁纸
  19. New eBooks Available for Subscribers
  20. 面试:Art虚拟机和Davlik虚拟机简要对比

热门文章

  1. 服务器端发送邮件签名采用Data URI scheme包含图片
  2. 四种常见的MapReduce设计模式
  3. DJANGO里让用户自助修改邮箱地址
  4. leetcode- Single Number
  5. MapReduce:Simplified Data Processing on Large Clusters中文版from百度文库
  6. Android cocos2d-x开发(三)之创建Android工程和编译
  7. WPF DatePicker 默认显示当前时间
  8. Redis 命令字符串(String)
  9. k8s拉取私有仓库镜像:通过config.json文件或命令行来创建secret(docker-registry)
  10. Scala隐式参数(隐式值)