|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
转——使用matlab和ISE 创建并仿真ROM IP核
- o. q* s; M8 ^1 [* s大家好,又到了每日学习的时间了,今天我们来聊一聊使用matlab和ISE 创建并仿真ROM IP核。本人想使用简单的中值滤波进行verilog相关算法的硬件实现,由于HDL设计软件不能直接处理图像,大部分过程都是可以将图像按照一定的顺序保存到TXT文档中,经过Modelsim仿真后,处理的数据再经过matlab显示图像;图像首先通过matlab或者C语言保存在TXT文档中,生成测试向量文件,然后在仿真软件中进行仿真处理,把处理后的数据保存为TXT格式,最后用matlab显示,观察结果。一般都是先创建MIF文件,将图像中的像素信息用一个ROM储存起来,然后调用ROM里面的地址进行处理,相当于制作了一个ROM查找表。
( C- @. p( b$ ?" U m+ g* F \+ `; K
用Quartus II创建并仿真ROM的步骤:7 t2 }; i# s# T) q9 v
1.在Quatus工程下生成一个ROM9 j2 L& H, w, S+ g! y/ a
2.编写.mif文件,作为ROM的初始化文件
* B+ a9 h8 t# V7 ?5 E& i3.将.mif文件拷贝到Modelsim工程下, N/ \/ N9 e' C* q4 i. L
4.进行Modelsim仿真
) \6 _: W; z1 ?% ~* ~' G2 ^, u
7 u% Z( c& o3 z. }. S+ C! X! a i- R5 N2 k9 W
图像保存的步骤:' J I6 \) R& Z& W6 K; q
1.使用matlab将图像生成txt文。
9 C7 u5 @/ m m1 }, H' `' p$ V6 c
) E. g7 \2 B, S; G8 o. j7 _8 C. n- w+ \& x( v. m
2.创建mif文件(Memory Initialization File):使用mif生成器、C语言或者matlab语言来生成;选择直接使用matlab生成mif文件gray_image.mif;+ t8 a- {1 j7 a: S* c
; i5 q* ]# |, m7 O' r: E
1 f; G3 `" f; K! r5 w生成的mif文件如下图所示:7 D, s8 B0 ?7 A
3 I/ i6 @0 C' E2 E1 W7 U# O
, J* v7 |, L5 U0 a# ?! G3.调用mif文件生成ROM(verilog文件即.v文件)# M$ D3 H" a3 Q0 D( k/ c$ j
. m1 T& ]" j* K$ s0 Z" Q+ d使用Xilinx创建并仿真ROM的步骤:5 p" U* c4 h! T7 S( F2 H
1.编写.coe文件,作为ROM的初始化文件,.coe文件的格式和内容如代码所示:
1 f6 V, F' W( u$ y 5 O( Y( h# N% _. B+ N7 l
/ W+ @& q0 v4 E( z0 t( V2 T2.生成的.coe文件格式如下图所示:1 B/ m: V& ]) p# Z9 }
( x! N9 T! [" J7 t/ v' q1 |
' ~, x3 V, P2 j3 w9 {0 b3.使用Xilinx中的Core Generator完成ROM的例化(生成的.coe文件的图像数据是一行行进行读取的)。打开ISE,右键单击New Source,如下图所示:, v5 f0 o \' h! c6 d. ?
; ~4 |- a6 z& ^6 o5 i3 g, P
8 y1 u; U# m+ [8 f单击之后选择IP_Core_Generator,
. ?7 {' q$ ?% N" C4 X# z
! N4 v" t9 {$ o! @/ Y
5 P0 V$ k' h" w2 c) n& i( i单击Next选项,选择Memories&Storage Elements->RAMs&ROMs->,选择块式存储或者分布式存储(这里根据存储数据的大小进行选择,较小的可以选择块式存储)。
0 P' ]& ]5 Q7 ` ! m- v/ a% D3 r) r) v5 P" ?( z0 B5 S
4 K/ V; h7 l- ]
点击Next,然后Finish。然后就出现了下面的界面,一直点击Next进行ROM属性的一些设置,直至完成:
1 K0 e* m, o9 f, H; ^- ]
( V6 h; Y3 U5 p! b) a$ [# n$ i
! z* }1 P3 t _
# s, N: \% _) e" y) U0 j然后就要选择所需要的ROM的大小:
/ C8 x9 L g7 o B 9 }* L% {7 X6 T
7 g$ X9 y0 B* \
) Y- [6 v' {% d8 c& c6 HportA 表示输出要不要时钟打拍输出,这个是在mux里实现的; 在添加初始化文件的时候,将之前matlab生成的.coe文件添加到ROM IP核中去。$ c2 G, ?4 @( u: i8 [7 v7 L( B
4 E& J3 K1 C; G2 o4 v2 M" x* ? 8 P5 `/ u9 ^( D4 `$ ]- P- U z0 u
$ g9 x7 g1 G5 q* t2 b0 h% U
一直next下去,就可以得到初始化好的ROM IP核,可以在./ipcore_dir目录下查看ROM文件,从而可以在顶层模块中对ROM进行例化。
% H) l+ ^, E: {" D1 e6 B2 G4 z2 T " o, q9 i# b! H. {2 e$ i; Q' ?
1 }, s W) P# y( T5 K+ m4 F生成的ROM文件的输入输出变量如下:
$ N. p" W$ ^0 V# T) o ! |; C" k m, N
$ L0 _1 O% {# h2 k# j2 n在顶层模块中对ROM进行例化如下:$ u0 b L! d1 h4 L- F
, l, f, c) n. O9 Z+ w' U$ |
/ C$ n' _0 c; ^+ `4.使用CoreGenerator完成ROM的例化后会生成一个.mif文件,这是Modelsim进行ROM仿真时需要的初始化文件,将.mif文件复制到Modelsim工程下进行仿真。7 k% t" t* a/ @/ x0 J2 w) s: p
s( q; ^3 B' Z6 K$ C+ m
5.查看ROM模块中的初始化数据,双击Rom模块,出现如下图的界面,点击show按钮,即可查看数据;
% Q5 E8 c" q. Y" { |
- V4 X9 O3 _3 y& ?# v2 P! T+ b0 u" e4 a" G5 \1 C, S2 Q
|
|