从你提的问题看,主要设计不是在对灰度图进行什么 *** 作,你列举的灰度值反转 *** 作用硬件描述语言只是一个“取反” *** 作,就是反相器(非门),如果是8位灰度值,就是8个反相器而已。
你要设计的主要 *** 作是读取灰度图,如果该图存放在一个存储器中的话,你要先了解这个存储器的容量、接口和读写时序,然后设计相应的地址发生器和读信号发生器。如果这个存储器是设计在FPGA当中的,则可以使用FPGA厂家提供的IP核来设计存储器。不知道你的存储器需要多大的容量来存储图像,太大的话,用FPGA来存储成本就挺高的。
这个你不能一开始就是用VHDL设计,我做循环频谱处理,给你说过程,也许对你有用,先用matlab仿真,这一步很重要验证你的方法是不是正确的,这也为你后续的VHDL设计测试做铺垫,因为你设计的vhdl代码需要测试数据,那么就从这里来,
第二步,使用c语言编写算法,这一步的工作是让你熟悉图像边缘检测算法的每一个步骤是如何做到的,因为VHDL是电路标书语言,要对每一BIT都要清楚,C语言的过程可以让你在设计VHDL之前就清楚了,最后一步是转换,只有前两个步骤都做好了,你才可以进行VHDL设计。要不然你设计好了VHDL代码,你测试都不知道怎么测试,哪里出错你都不知道,有了C语言的过程,你可以对某一个子模块进行调试。
先将所写的VerilogHDl程序用Quartus II 综合下,
在综合结束后,设计者经常会希望看到综合后的原理图,以分析综合结果是否与所设想中的设计一致,这样就会用到RTL Viewer和Technology Map Viewer这两个工具。
1.RTL Viewer:
11打开方法:Tools---Netlist---RTL Viewer
注意:在这之前必须已经执行过综合或全编译。
12列表项含义:
[Instances],即实例,是指设计中能扩展为低层次的模块或实例。
[Primitives],即原语,是指不能被扩展为低层次的底层节点。用Quartus II自带综合器综合时,它包含的是寄存器和逻辑门;而用第三方综合工具综合时,它包含的是逻辑单元。
[Pin],即引脚,是当前层次的I/O端口。
[Nets],即网线,是连接节点(包括实例、源语和引脚)的网线。
13放大与缩小视图:
[Fit in Window]:视图适应当前窗口大小,空白处右键,选Zoom---Fit in Window。快捷键键:ctrl+W;
[Fit Selection in Window]:放大当前选择到适应窗口,空白处右键,选Zoom---Fit Selection in Window。快捷键键:ctrl+shift+W;
14过滤原理图:
选中任意一节点,右键---Filter,选项如下:
[Sources],即源,指过滤出所选节点或端口的源端逻辑;
[Destinations],即目标,……目标端口;
[Sources&Destinations],即源和目标,……源和目标的集合。
[Selected Nodes&Nets],所选结点和网线,过滤出已经选择的节点和网线。
[Between Selected Nodes]所选节点之间,……两个节点之间的逻辑。
注意:在过滤后可以单击工程区左侧工具栏 按钮,回到过滤前的原理图,或者单击左侧列表项,查看其他层次的原理图。
14打开不同层次的模板:
双击所选模块可以进入下一层次(或空白处右键---Hierarchy Down),单击工程区左侧工具栏 按钮回到上一层次(或空白处右键---Hierarchy Up)。
15定位到其他工具:
右键---Locate,在子菜单中的分别有定位与各种工具的选项,选中后当前所选项就会定位到所选工具中。
16查找节点或网线:
空白处右键---Find(快捷键:ctrl+F),查找对话框中的具体选项不做详述(P296)。
17设置原理图分页:
Tools---Options,然后点Category的Rtl/Technology Map Viewer项,
[Nodes per page]:设置每面多少个节点;
[Ports per page]:……端口或引脚数;
如果RTL/Technology Map Viewer当前面超过了所设定的值,就会自动分成一个新的页面。可按 进入下一页面,按 回到上一页面。还可以单击原理图空白区,选择[go to]命令,填入页数,到达自己需要的页面。
2.Technology Map Viewer:
与RTL Viewer不同,Quartus II Technology Map Viewer提供的是设计的底级或基元极专用技术原理表征,它展示的是综合后的电路结构。
21打开方法:打开方法:Tools--- Netlist---Technology Map Viewer;
其它 *** 作与RTL viewer基本相同,在此就不再赘述!
module clk_div(clk,out1,out2);
input clk;
output out1,out2;
reg out1,out2;
reg [31:0]cnt1,cnt2;
always @(posedge clk)begin//50MHz分频计数
if(cnt1<32'd24999999)
cnt1 <=cnt1 + 32'd1;
else
cnt1 <=32'd0;
end
always @(posedge clk)//分频后的半周期反转
if(cnt1 == 0)
out1<=~out1;
always @(posedge clk)begin//5MHz分频计数
if(cnt2<32'd4999999)
cnt2 <=cnt2 + 32'd1;
else
cnt2 <=32'd0;
end
always @(posedge clk)//20%占空比
if(cnt2 == 32'd999999)
out2<=0;
else if(cnt2 == 32'd4999999)
out2<=1;
endmodule
以上就是关于VHDL或VerilogHDL对图像 *** 作全部的内容,包括:VHDL或VerilogHDL对图像 *** 作、图像边缘检测 verilog怎么实现、Verilog HDL程序怎样转换成电路图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)