Verilog读写文件
在通过编写Verilog代码实现ram功能时,需要自己先计算寄存器的位数和深度再编写代码。
而如果需要在编写的ram中预置值的话,就需要使用Verilog语言编写程序读写文件,来将相应的数据赋给寄存器。
这里给出Verilog实现ram的代码:
module dpram(
rclk,
raddr,
dout, wclk,
we,
waddr,
din
); parameter aw = ; //address widtth
parameter dw = ; //data address input rclk; //read clock
input [aw-:] raddr; //read address
output [dw-:] dout; //data output input wclk; //write clock
input we; //write enable
input [aw-:] waddr; //write address
input [dw-:] din; //data input reg [dw-:] mem[(<<aw)-:]; //block-ram
reg [aw-:] ra; //register read address always @(posedge rclk)
begin
ra <= # raddr;
end assign dout = mem[ra]; always @(posedge wclk)
begin
if(we)
mem[waddr] <= # din;
end //读取mem文件存取程序中的mem寄存器
initial $readmemh("bmp_64K.mem",mem); endmodule
下面的程序定义了ram中寄存器的位数和深度,决定了ram的大小:
reg [dw-:] mem[(<<aw)-:]; //block-ram
整段程序不是很复杂,其他部分主要是用于实现ram的读写控制功能,这里不做赘述。
Verilog实现读写文件功能的部分代码如下:
//读取mem文件存取程序中的mem寄存器
initial $readmemh("bmp_64K.mem",mem);
这段程序的功能是从文件名是“bmp_64K.mem”的文件中读取其中的数据并置入前面定义的mem寄存器,即将数据置入ram中。
$readmemh("file_name.xxx",data)
就是将file_name.xxx中的数据读入到data数组中。
使用格式有6种:
) $readmemb("<数据文件名>",<存贮器名>);
) $readmemb("<数据文件名>",<存贮器名>,<起始地址>);
) $readmemb("<数据文件名>",<存贮器名>,<起始地址>,<结束地址>);
) $readmemh("<数据文件名>",<存贮器名>);
) $readmemh("<数据文件名>",<存贮器名>,<起始地址>);
) $readmemh("<数据文件名>",<存贮器名>,<起始地址>,<结束地址>);
$readmemb要求数据格式必须是二进制形式,$readmemh则要求数据格式必须是16进制格式。
下面一些用法格式:(摘自https://wenku.baidu.com/view/81075c1f964bcf84b9d57b57.html)
1,打开文件
integer file_id;
file_id = fopen("file_path/file_name");
2,写入文件
//$fmonitor只要有变化就一直记录
$fmonitor(file_id, "%format_char", parameter);
eg:$fmonitor(file_id, "%m: %t in1=%d o1=%h", $time, in1, o1);
//$fwrite需要触发条件才记录
$fwrite(file_id, "%format_char", parameter);
//$fdisplay需要触发条件才记录
$fdisplay(file_id, "%format_char", parameter);
$fstrobe();
3,读取文件
integer file_id;
file_id = $fread("file_path/file_name", "r");
4,关闭文件
$fclose(fjile_id);
5,由文件设定存储器初值
$readmemh("file_name", memory_name"); //初始化数据为十六进制
$readmemb("file_name", memory_name"); //初始化数据为二进制
Verilog读写文件的更多相关文章
- Verilog 读写文件
Verilog 读写文件 在数字设计验证中,有时我们需要大量的数据,这时可以通过文件输入,有时我们需要保存数据,可以通过写文件保存. 读写文件testbench module file_rw_tb() ...
- Hyper-V无法文件拖拽解决方案~~~这次用一个取巧的方法架设一个FTP来访问某个磁盘,并方便的读写文件
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...
- 计算机程序的思维逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库
57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但 ...
- Python读写文件
Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...
- php中并发读写文件冲突的解决方案
在这里提供4种高并发读写文件的方案,各有优点,可以根据自己的情况解决php并发读写文件冲突的问题. 对于日IP不高或者说并发数不是很大的应用,一般不用考虑这些!用一般的文件操作方法完全没有问题.但如果 ...
- C#读写文件的方法汇总_C#教程_脚本之家
C#读写文件的方法汇总_C#教程_脚本之家 http://www.jb51.net/article/34936.htm
- Inno Setup 如何读写文件
软件安装的实质就是拷贝,对于简单的打包当然不需要考虑修改某(配置)文件.通过inno修改文件的目的在于把安装时相关信息写入文件中,提供其它应用的读取,而这些信息也只能在安装时才能确定,比如安装用户选择 ...
- java使用IO读写文件总结
每次用到IO的读写文件都老忘记写法,都要翻过往笔记,今天总结下,省的以后老忘.java读写文件的IO流分两大类,字节流和字符流,基类分别是字符:Reader和Writer:字节:InputStream ...
- python读写文件时中文的转码问题
读写文件都要将中文转为unicode字符. 读文件: u = unicode(s, 'gbk') 这里不能使用encode 写文件: u = encode('utf')
随机推荐
- californium 框架设计分析
Californium 源码分析 1. Californium 项目简介 Californium 是一款基于Java实现的Coap技术框架,该项目实现了Coap协议的各种请求响应定义,支持CON/NO ...
- MVC,MVP,MVVM
MVC模式: MVC即Model-VIew-Controller.他是1970年代被引入到软件设计大众的.MVC模式致力于关注点的切分,这意味着model和controller的逻辑是不与用户界面(V ...
- android学习8——获取view在屏幕上的绝对坐标
获取view在屏幕上的绝对坐标在调试时候非常有用. 看如下代码 public class AbsolutePosActivity extends Activity { @Override public ...
- EF CodeFirst下数据库更新
用EF Code first模式来开发系统,可使用Migrations命令来让数据库自动更新 1.在VS->工具->库程序包管理器->程序包管理控制台 中执行 Enable-Migr ...
- 平面上的地图搜索--Java学习笔记(四)
版权声明: 本文由Faye_Zuo发布于http://www.cnblogs.com/zuofeiyi/, 本文可以被全部的转载或者部分使用,但请注明出处. 这一个月以来,都在学习平面上的地图搜索,主 ...
- [多线程] Web 项目中,少有涉及到的一次多线程编程的经验
如今框架横行,Spring 已经是非常成熟的容器体系,我们在日常开发 JavaWeb 的工作中,大多已经不需要考虑多线程的问题,这些问题都已经在Spring容器中实现,框架的意义就是让程序员们可以专注 ...
- 【转载】JavaScript继承详解一
面向对象与基于对象 几乎每个开发人员都有面向对象语言(比如C++.C#.Java)的开发经验. 在传统面向对象的语言中,有两个非常重要的概念 - 类和实例. 类定义了一类事物公共的行为和方法:而实例则 ...
- [LeetCode] Dp
Best Time to Buy and Sell Stock 题目: Say you have an array for which the ith element is the price of ...
- Single Number leetcode
Given an array of integers, every element appears twice except for one. Find that single one. Note:Y ...
- wemall doraemon中Android app商城系统向指定URL发送GET方法的请求代码
URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 URL 之间的通信链接.程序可以通过URLConnection实例向该URL发送请求.读取U ...