rom查找表matlab,利用Xilinx中的ROM构造查找表来计算sin和cos的方法探讨

1.使用matlab制作.coe文件

查找表的构造

构造256点的正余弦表

exp(-j*2*pi*(0:255)/256),分别得到 cos和sin的查找表

matlab代码: 求sin

fid = fopen(‘sin.txt‘,‘a‘);

str1= ‘MEMORY_INITIALIZATION_RADIX=10;‘;

str2= ‘MEMORY_INITIALIZATION_VECTOR=‘;

fprintf(fid,‘\t%s\n \t%s\n‘, str1,str2);for k=1:256;

y(k)=sin(2*pi*k/256);

y(k)= int16(y(k)*2^15); // 这一步主要是考虑是表中数据的格式Q(s,16,15),完成浮点数到定点数之间的转换.

fprintf(fid,‘\t%d%c\n‘,y(k),‘,‘);

end

fclose(fid);

matlab代码:求cos

fid = fopen(‘cos.txt‘,‘a‘);

str1= ‘MEMORY_INITIALIZATION_RADIX=10;‘;

str2= ‘MEMORY_INITIALIZATION_VECTOR=‘;

fprintf(fid,‘\t%s\n \t%s\n‘, str1,str2);for k=1:256;

y(k)=cos(2*pi*k/256);

y(k)= int16(y(k)*2^15);

fprintf(fid,‘\t%d%c\n‘,y(k),‘,‘);

end

fclose(fid);

运行这两个matlab程序可以得到cos.txt, sin.txt文件,里面存放了适合放在ROM中的数据格式。

注意点:

(1). COE文件格式

在txt文件开头:

MEMORY_INITIALIZATION_RADIX=10;    //表示ROM内容的数据格式是10进制

MEMORY_INITIALIZATION_VECTOR=

在txt文件的最后一个数字后加入分号“;”。这里需要修改cos.txt,sin.txt,将最后的,改为;

(2)将cos.txt, sin.txt文件后缀直接改为coe文件类型。

-->如何修改txt 文件类型?

默认情况下,Windows的文件后辍名是隐藏的,因此,为了更改文件的后辍名,首先必须让文件名的后辍显示出来。

方法如下:在文件窗口下选择工具>文件夹选项>查看>高级设置中不勾选隐藏已知文件类型的扩展名,即可显示文件后缀名,然后直接更改为.coe后缀即可!

2. 定制rom

注意点:

(1)memory type :single port ROM

(2)memory size :

width 为数据的宽度

Depth 为数据的个数,它决定了输入的addr的位数。比如,depth = 256, addr则为8位。

(3)选择初始化文件。cos.coe, sin.coe ,选择旁边的show 可以查看添加是否正确。

这一步会生成对应的.mig、.vhd 文件。

3. 仿真验证ROM是否正常工作

(1)新建top文件

entity look_up_sin isport(

clk:instd_logic;

rst:instd_logic;

addr:in std_logic_vector(7 downto 0); --Q(16,13)

sin_out:out std_logic_vector(15 downto 0)--Q(16,15)

);

end look_up_sin;

architecture Behavioral of look_up_sinisCOMPONENT sin_rom

PORT (

clka : IN STD_LOGIC;

addra : IN STD_LOGIC_VECTOR(7 DOWNTO 0);

douta : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)

);

END COMPONENT;

begin

Inst_sin_rom : sin_rom

PORT MAP (

clka=>clk,

addra=>addr,

douta=>sin_out

);

end Behavioral;

(2)remove sin_rom.XCO ip核文件,添加sin_rom.vhd文件。当文件sin.coe放在ipcore_dir目录下面时,不需要这一步。应直接用sin_rom.xco,不然仿真会提醒

sin.mif文件找不到!!

(3)新建testbench文件。

仿真结果如下:

c7b617c607d172a60ba0070eb01d62f2.png

对比sin_txt文件

09accfabb2165d45fe102f83bbcdb561.png

原文:http://www.cnblogs.com/xd-elegant/p/4528445.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值