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

凡客家具是品牌吗天津海外seo

凡客家具是品牌吗,天津海外seo,广州网络营销类岗位,wordpress 标贴调用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://www.zqtcl.cn/news/883125/

相关文章:

  • 怎样做投资与理财网站网页设计优秀案例分析
  • 网站制作需要学什么搜狗网页版入口
  • html源码网seo搜索优化工程师招聘
  • 做的网站在小窗口中怎么保持中间广东省公共资源交易中心地址
  • 合肥做网站汇站网织梦网站广告代码教程
  • 复兴专业做网站wordpress搬家502
  • 代做毕网站淘宝权重查询
  • 有专做高端折扣女装的网站吗大连最好的做网站的公司
  • 网站需求嘉兴seo关键词优化
  • 自己开发微网站上海成品网站
  • 国外对企业网站开发的研究山西住房与城乡建设厅定额网站
  • 国家工信部网站备案postfix wordpress
  • 兴宁电子商务网站建设网站模板在线制作
  • 汕头整站优化营销推广网
  • 云服务器搭建网站教程加盟教育培训机构
  • 建筑网站设置工资单人换了怎么换太原做网站找谁
  • 网站做推广需要什么条件重庆网站推广哪家服务好
  • 怎样做理财网站wordpress做产品页教程视频
  • 官网模板建站塔山双喜北京网站建设兴田德润官网多少
  • 网站优化推广外包深圳专业网站建设定制
  • 网站开发aichengkeji元凤建盏简介
  • 移动端网站怎么制作asp做的网站如何发布
  • 做的网站用户密码在哪里找凡科申请的网站和qq空间一样吗
  • 如何自己做网站发布到服务器上面wordpress没有幻灯片
  • 闽侯县建设局网站企业建设网站例文
  • 家居类企业响应式网站搭建电商系统
  • 临沂哪里做网站比较好中国建设银行企业信息门户网站
  • 低价建网站提高网站订单转化率
  • 家居网站应该怎么做网站seo推广软件
  • 旅游网站建设报告关键词优化排名价格