当前位置: 首页 > news >正文

做网站新闻公司网站首页布局图

做网站新闻,公司网站首页布局图,建网站 免费,青岛网站建设公司报价FPGA开发过程中“行为功能仿真”是非常必要的一个过程#xff0c;如果仿真都没通过#xff0c;则上板测试必定失败。 FPGA图像处理需要读写大量的图像数据#xff0c;单看这些图像数据实际是没有规则的#xff0c;如果直接上板测试#xff0c;调试起来非常困难#xff0…FPGA开发过程中“行为功能仿真”是非常必要的一个过程如果仿真都没通过则上板测试必定失败。 FPGA图像处理需要读写大量的图像数据单看这些图像数据实际是没有规则的如果直接上板测试调试起来非常困难数量量大ILA只能抓一段时间的数据不易确定问题原因。 所以FPGA图像处理开发中创建一个正确的仿真测试激励非常关键基本上只要满足时序要求上板就大概率就能过如果上板遇到问题还可以拿到这张图片数据仿真测试一下看看能否复现如果能复现问题再通过仿真调试解决这个问题就容易很多了。 今天我们就来搭建一个图像处理仿真测试工程实现读写bmp文件的功能。 一、SystemVerilog/Verilog读写文件函数 仿真测试激励Testbench中经常需要读写文件这里介绍一下SystemVerilog/Verilog常用的操作文件的函数写测试激励推荐使用SystemVerilog。 1、打开文件函数 函数定义integer fd $fopen(file_nametype) 函数返回值 fd不等于0表示文件打开成功fd等于0表示文件打开失败。 函数参数 1file_name是一个字符串。 2type有如下类型 “r” or “rb”只读 或 按二进制文件读取 “w” or “wb”只写 或 按二进制文件写入 “a” or “ab”打开文件追加从文件末尾EOF写或创建文件写 “r” or “rb”打开文件可读可写 “w” or wb 打开或创建文件写 a ab or ab 追加在文件末尾打开 示例 integer fd; fd $fopen(./1280_720.bmp,rb);2、关闭文件函数 养成一个良好的习惯打开文件处理完后记得关闭文件。 函数定义$fclose(fd) 函数说明fd就是调用$fopen返回的值。 3、读写文件函数 1writemem[b|h]/readmem[b|h] writemem 表示写readmem表示读。b 表示读写二进制文件h表示读写十六进制文件。 所以对应的全名有writememb/writememh/readmemb/readmemh。 读写文件函数调用形式如下 1$readmemb(数据文件名,存储器名); 2$readmemb(数据文件名,存储器名,起始地址); 3$readmemb(数据文件名,存储器名,起始地址,终止地址); 其中存储器名就是数组型变量起始地址和终止地址就是数组型变量的起始范围。 示例 reg [31:0] mem[63:0] ;initial begin//读文件数据$readmemb(./data.hex, mem);$display(Read memory1: %h, mem[0]) ;//写文件数据$writememb(./data_bak.hex, mem);end 注意 readmem[b|h]是将数据放在存储器数组中所以存储器数组应该定义为reg型而不是wire。 readmem[b|h]是不能操作二维数组只能操作一维数组。 2$fscanf 和 $fwrite $fscanf 按照指定格式从文件中读取数据。 函数定义integer flag$fscanf(fd,format,args); 函数参数fd表示文件句柄format表示数据格式%d表示十进制整数%c表示一字节8bit字符%x表示十六进制整数args表示存储器数组。 $fwrite 按照指定格式从文件中读取数据。 函数定义integer flag$fwrite(fd,format,args); 函数参数定义与$fscanf一样。 示例 parameter LEN 1920; integer i; reg [7:0] data[LEN-1:0]; integer fd;initial begin//读文件fd $fopen(./in.txt,rb);for( i0; iLEN; ii1 ) begin$fscanf(fd, %c, data[i]);$display(Read data is: %c, data[i]);end $fcolse(fd);//写文件fd $fopen(./out.txt,rb);for( i0; iLEN; ii1 ) begin$fwrite(fd, %c, data[i]);end $fcolse(fd); end 4、文件定位函数 1获取文件位置函数 $ftell integer pos $ftell( fd ) ; 返回文件当前位置距离文件首部的偏移量初始地址为 0偏移量按照字节为一单位8bits配合 $fseek 使用。 2重定位函数$fseek integer code $fseek(fd, offset, type) ; 设置文件下一个输入或输出的位置 函数参数 offset 为设置的偏移量type 为偏移量的参考位置具体如下 --- 0: 以文件起始位置为基准 --- 1: 以文件当前位置为基准 --- 2: 以文件末尾为基准 二、BMP文件介绍 BMPBitmap文件格式是一种图像文件格式与常见的图像格式如 JPEG、PNG 等不同它属于典型的位图格式。BMP 采用位映射存储格式除了图像深度可选以外不使用其他任何压缩。 1、BMP文件头 BMP文件头长度可变但一般都是 54 字节其中包括 14 字节的 Bitmap 文件头以及 40 字节的 DIB (Device Independent Bitmap) 数据头或称位图信息数据头BItmap Information Header。 2、视频数据 Raw Bitmap Data 常见的数据格式是24bitRGB具体到每一个像素是24bit数据分别是B、G、R的形式排列。 三、图像处理仿真测试工程 1、图像处理仿真测试工程结构 2、参数定义 设定图像文件位置、图像大小、横向消影区、纵向消影区大小。 //define pix_1920_1080 define pix_1280_720ifdef pix_1920_1080 define INPUT_FILE ../../../../test_img/in/1920_1080.bmp //input imagedefine IMG_WIDTH 1920 //Image widthdefine IMG_HEIGHT 1080 //Image heightdefine H_BLANK 720 //横向消影区仿真可自由设定define V_BLANK 45 //纵向消影区仿真可自由设定 endififdef pix_1280_720 define INPUT_FILE ../../../../test_img/in/1280_720.bmp //input imagedefine IMG_WIDTH 1280 //Image widthdefine IMG_HEIGHT 720 //Image heightdefine H_BLANK 480 //横向消影区仿真可自由设定define V_BLANK 30 //纵向消影区仿真可自由设定 endifdefine OUTPUT_FILE ../../../../test_img/out/result.bmp //result imagedefine SEEK_SET 0 define SEEK_CUR 1 define SEEK_END 2 3、读图像文件 读取BMP文件数据先读取BMP文件头BMP的数据时按倒序存储即从下到上从左到右读取出来存储时需要存储到对应的位置。 fdI $fopen(INPUT_FILE,rb);if (fdI NULL) begin $display( OPEN FAIL: The file not exist !!!);end else begin $display( OPEN file SUCCESS !);//读取bmp文件头 ret $fread(bmp_head_r, fdI, 0, LEN_HEADER);//读取图像RGB分量值//BMP倒序存储数据时从下到上从左到右for(iIMG_HEIGHT - 1;i 0;ii-1) for(j0;j IMG_WIDTH;jj1) beginidx i*IMG_WIDTH j;imgB_r[idx] $fgetc(fdI);//bimgG_r[idx] $fgetc(fdI);//gimgR_r[idx] $fgetc(fdI);//r end$display( Read b,g,r Successful !);end 4、写图像文件 写图像文件先写入文件头信息再按照倒序存储BGR数据需要移动文件内的偏移量。 //写入文件头 for(i0;i LEN_HEADER;ii1) begin$fwrite(fdO, %c, bmp_head_r[i]);end//移动到图片数据最后一行起始位置file_end_offset IMG_ALL LEN_HEADER - IMG_WIDTH*3;$fseek(fdO, file_end_offset, SEEK_SET);assign {R_o_w, G_o_w, B_o_w} img_data_o;always (posedge clk or posedge reset) beginif (reset) beginout_data_cnt_r b0;valid_o_r b0;end else beginvalid_o_r valid_o;if(valid_o) begin$fwrite(fdO, %c, B_o_w);$fwrite(fdO, %c, G_o_w);$fwrite(fdO, %c, R_o_w);out_data_cnt_r out_data_cnt_r 1b1;end else if(valid_o_r) begin//行结束file_end_offset file_end_offset - IMG_WIDTH*3;$fseek(fdO, file_end_offset, SEEK_SET);endendend 注意 BMP位图的每一行像素所占字节数必须被4整除。若不能倍4整除则每一行的末尾需要“补”1至3个字节的“00”。 整个文件大小也需要是4字节的整数倍不足需要补零当然不补零也不影响正常显示。 四、仿真测试结果 仿真图 效果图 五、源码下载 https://pan.quark.cn/s/f0e7a72caa26
http://wiki.neutronadmin.com/news/308554/

相关文章:

  • 广东微信网站制作公司软件开发项目流程
  • 都哪些网站可以做gif网站公司怎么做运营
  • 北京论坛网站建设有了域名搭建网站详细步骤
  • 广东融都建设有限公司 公司网站nodejs适合网站开发
  • 360平台怎么做网站优化电脑软件开发是什么专业
  • 百度新闻源网站公司网站app怎么做
  • 做影视网站什么cms好用wordpress 安装主题 主机名
  • 网站建设试卷摄影东营新闻最新消息
  • phpcms 手机网站模板杭州建设网点地址查询
  • 网站手机版跳转 seo微信公众号的微网站怎么做
  • 黑龙江省建设厅网站站长鞍山网站制作谁家好
  • 虚拟主机WordPress建站企业网站推广阶段
  • 营销型网站的设计步骤网站空间租用哪家好
  • 万网主机建设网站流程首饰行业网站建设策划
  • 移动网站开发培训英文建站
  • 医院网站案例郑州比较厉害的短视频公司
  • 网站 风格设计工作室网站
  • 福建龙岩网站制作公司培训网站计时怎么破
  • 网站建设中界面模板下载江苏省住房城乡建设厅门户网站
  • 网站英文域名怎么查建筑人才网证书
  • 企业网站建设及前期准备找别人做网站注意什么
  • 贵州做网站怎么推广山东省作风建设网站
  • 网站页面布局用什么做wordpress 摄影 主题
  • 二七郑州网站建设锡林浩特市长安网站 建设初步方案
  • 重庆建网站 私单备案网站的规则
  • 怎样把网站做的好看网站流量排行
  • 中山市小榄新意网站设计有限公司建设网站是什么样的
  • pytson做网站安全吗在线简历免费制作网站
  • 北京网站建设及优化如何做seo搜索优化
  • 廊坊市 广阳区城市建设局网站多用户商城app