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

网站一个人可以做吗/百度网站的网址

网站一个人可以做吗,百度网站的网址,周至做网站的公司,顺德专业网站制作前言本人想使用簡單的中值濾波進行verilog相關算法的硬件實現,由於HDL設計軟件不能直接處理圖像,大部分過程都是可以將圖像按照一定的順序保存到TXT文檔中,經過Modelsim仿真后,處理的數據再經過matlab顯示圖像;圖像首先…

前言

本人想使用簡單的中值濾波進行verilog相關算法的硬件實現,由於HDL設計軟件不能直接處理圖像,大部分過程都是可以將圖像按照一定的順序保存到TXT文檔中,經過Modelsim仿真后,處理的數據再經過matlab顯示圖像;圖像首先通過matlab或者C語言保存在TXT文檔中,生成測試向量文件,然后在仿真軟件中進行仿真處理,把處理后的數據保存為TXT格式,最后用matlab顯示,觀察結果。一般都是先創建MIF文件,將圖像中的像素信息用一個ROM儲存起來,然后調用ROM里面的地址進行處理,相當於制作了一個ROM查找表。

用Quartus II創建並仿真ROM的步驟:

1.在Quatus工程下生成一個ROM

2.編寫.mif文件,作為ROM的初始化文件

3.將.mif文件拷貝到Modelsim工程下

4.進行Modelsim仿真

圖像保存的步驟:

1.使用matlab將圖像生成txt文。

%將256位的BMP灰度圖像128*128大小生成TXT文檔,再生成mif文件;

clc

clear all

close all

I_rgb = imread('lena.jpg');

subplot(2, 2, 1), imshow(I_rgb), title('lena-rgb')

I_gray = rgb2gray(I_rgb);

subplot(2, 2, 2), imshow(I_gray), title('lena-gray')

I = imresize(I_gray, 0.25);

subplot(2, 2, 3), imshow(I), title('lena-qtr')

fid = fopen('./lena.txt','wt');

for i = 1 : size(I, 1)

for j = 1 : size(I, 2)

fprintf(fid, '%d ', I(i, j));%每個數據之間用空格分開%

end

fprintf(fid, '\n');

end

fid = fclose(fid);

I_data = load('./lena.txt');

2.創建mif文件(Memory Initialization File):使用mif生成器、C語言或者matlab語言來生成;

選擇直接使用matlab生成mif文件gray_image.mif;

%mcode to create a mif file

src = imread('lena.jpg');

gray = rgb2gray(src);

[m,n] = size( gray ); % m行 n列

N = m*n; %%數據的長度,即存儲器深度。

word_len = 8; %%每個單元的占據的位數,需自己設定

data = reshape(gray', 1, N);% 1行N列

%fid=fopen('gray_image.mif', 'w'); %打開文件

fid=fopen('gray_image.mif', 'w'); %打開文件

fprintf(fid, 'DEPTH=%d;\n', N);

fprintf(fid, 'WIDTH=%d;\n', word_len);

fprintf(fid, 'ADDRESS_RADIX = UNS;\n'); %% 指定地址為十進制

fprintf(fid, 'DATA_RADIX = HEX;\n'); %% 指定數據為十六進制

fprintf(fid, 'CONTENT\t');

fprintf(fid, 'BEGIN\n');

for i = 0 : N-1

fprintf(fid, '\t%d\t:\t%x;\n',i, data(i+1));

end

fprintf(fid, 'END;\n'); %%輸出結尾

fclose(fid); %%關閉文件

生成的mif文件如下圖所示:

0a19499b1236229811a79e17e470895f.png

3.調用mif文件生成ROM(verilog文件即.v文件)

這個是Altera的方法,因為本人電腦上只安裝了Xilinx軟件,所以這一步沒有進行實際操作。

使用Xilinx創建並仿真ROM的步驟:

1.編寫.coe文件,作為ROM的初始化文件,.coe文件的格式和內容如代碼所示:

%mcode to create a coe file

%生成的數據是一行行進行讀取的

src = imread('lena.jpg');

gray = rgb2gray(src);

[m,n] = size( gray ); % m行 n列

N = m*n; %%數據的長度,即存儲器深度。

word_len = 8; %%每個單元的占據的位數,需自己設定

data = reshape(gray', 1, N);% 1行N列

%fid=fopen('gray_image.mif', 'w'); %打開文件

fid=fopen('lena.coe', 'wt'); %打開文件

fprintf(fid, 'MEMORY_INITIALIZATION_RADIX=16;\n');

fprintf(fid, 'MEMORY_INITIALIZATION_VECTOR=\n');

for i = 1 : N-1

fprintf(fid, '%x,\n', data(i));%使用%x表示十六進制數

end

fprintf(fid, '%x;\n', data(N)); %%輸出結尾,每個數據后面用逗號或者空格或者換行符隔開,最后一個數據后面加分號

fclose(fid); %%關閉文件

2.生成的.coe文件格式如下圖所示:

588a25bbf0d78e1419166322b319e813.png

3.使用Xilinx中的Core Generator完成ROM的例化(生成的.coe文件的圖像數據是一行行進行讀取的)。

打開ISE,右鍵單擊New Source,如下圖所示:

b2d2c42d45b6cf360daae435b5c638e4.png

單擊之后選擇IP_Core_Generator,

6999b1cd1bb123e5af33b7432150d064.png

單擊Next選項,選擇Memories&Storage Elements->RAMs&ROMs->,選擇塊式存儲或者分布式存儲(這里根據存儲數據的大小進行選擇,較小的可以選擇塊式存儲)。

9454c6bde4cb1de2df2be09f7c5a0f1d.png

點擊Next,然后Finish。然后就出現了下面的界面,一直點擊Next進行ROM屬性的一些設置,直至完成:

87110a3e0c25eb6bc72f233f5f1e392a.png

771aebed358254d10ce3585287e6be80.png

然后就要選擇所需要的ROM的大小

05ac268abe8f0c3590f07abbfddb9f7a.png

2c4115175574eac11bf54d8549347342.png

portA 表示輸出要不要時鍾打拍輸出,這個是在mux里實現的;

在添加初始化文件的時候,將之前matlab生成的.coe文件添加到ROM IP核中去。

7a90ac47c35834897c222a4efdaa924f.png

1870edf3798d93fc38eb5e9de4fb37b5.png

一直next下去,就可以得到初始化好的ROM IP核,可以在./ipcore_dir目錄下查看ROM文件,從而可以在頂層模塊中對ROM進行例化。

acec5eeef3a5c616df860058fd935c75.png

生成的ROM文件的輸入輸出變量如下:

314a0c4215e0a644bc465f860179545e.gif

42dc719f92eb36669033620654eb1993.gif

modulerom_512by512(

clka,

addra,

douta

);inputclka;input [17 : 0] addra;output [7 : 0] douta;

View Code

在頂層模塊中對ROM進行例化如下:

314a0c4215e0a644bc465f860179545e.gif

42dc719f92eb36669033620654eb1993.gif

wire [7:0] rom_data;wire [17:0] rom_addr;

rom_512by512 U1

(

.clka(CLK),//input clka;

.addra( rom_addr), //input

.douta(rom_data) //output

);

View Code

4.使用CoreGenerator完成ROM的例化后會生成一個.mif文件,這是Modelsim進行ROM仿真時需要的初始化文件,將.mif文件復制到Modelsim工程下進行仿真。

5.查看ROM模塊中的初始化數據,雙擊Rom模塊,出現如下圖的界面,點擊show按鈕,即可查看數據;

2c4115175574eac11bf54d8549347342.png

http://www.lbrq.cn/news/762427.html

相关文章:

  • 响应式网站的排版/专业seo网络推广
  • 做web网站的步骤/信息流广告案例
  • 高校门户网站开发/网址缩短在线生成器
  • 怎么做网站教程/百度推广营销怎么做
  • 免费设计图片素材网站/深圳网站建设哪家好
  • 网站建设营销公司/sem是什么的缩写
  • 连锁酒店网站方案/网络营销八大职能
  • 微店那样的网站怎么做/seo关键词查询
  • 建站塔山双喜/万网查询
  • 软件开发项目/seo谷歌外贸推广
  • 怎样做打赏网站/关键字c语言
  • 福田做棋牌网站建设找哪家公司好/百度竞价seo排名
  • app要有网站做基础知识/班级优化大师app下载学生版
  • 可以做简历的网站/网络电商推广方案
  • 做微信表情的微信官方网站/浙江seo技术培训
  • 申请网站就是做网站吗/重庆森林电影简介
  • 装修案例欣赏/长沙百度首页优化排名
  • 美工做图哪个网站好/网站怎么做推广
  • 做网站需要懂哪些语言/网站seo推广计划
  • 龙岗网站/app推广联盟平台
  • 万户网站制作/百度sem是什么意思
  • 同企网站建设做网站/网络营销八大工具
  • 做数据分析好看的网站/培训心得体会范文大全1000字
  • 怎样做免费网站卖东西/指数平滑法
  • 服务建设网站/网页制作的步骤
  • 商城手机网站建设多少钱/四种基本营销模式
  • 企业网站如何优化排名/站长工具网址是多少
  • 网站 水印/谷歌收录提交入口
  • 商城源代码/seo推广方案怎么做
  • 长春怎么注册网站平台/东莞排名优化团队
  • ESP32入门开发·通用硬件定时器 (GPTimer)
  • 设计模式基础概念(行为模式):策略模式
  • TeamViewer 以数字化之力,赋能零售企业效率与客户体验双提升
  • dubbo应用之门面设计模式
  • Python实战教程:PDF文档自动化编辑与图表绘制全攻略
  • 肖臻《区块链技术与应用》第十讲:深入解析硬分叉与软分叉