利用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=:; y(k) =sin(*pi*k/); y(k) = int16(y(k)*^); // 这一步主要是考虑是表中数据的格式Q(s,,),完成浮点数到定点数之间的转换. 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=:; y(k) =cos(*pi*k/); y(k) = int16(y(k)*^); 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 is port(
clk: in std_logic; rst: in std_logic; addr:in std_logic_vector( downto ); --Q(,) sin_out:out std_logic_vector( downto )--Q(,)
); end look_up_sin; architecture Behavioral of look_up_sin is COMPONENT sin_rom PORT ( clka : IN STD_LOGIC; addra : IN STD_LOGIC_VECTOR( DOWNTO ); douta : OUT STD_LOGIC_VECTOR( DOWNTO ) ); 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文件。
仿真结果如下:
对比sin_txt文件
文章转载自: http://blog.csdn.net/shanekong/article/details/44731951
利用Xilinx中的ROM构造查找表来计算sin和cos的方法探讨的更多相关文章
- 利用.Net中Process类调用netstat命令来判断计算端口的使用情况
利用.Net中Process类调用netstat命令来判断计算端口的使用情况: Process p = new Process();p.StartInfo = new ProcessStartInfo ...
- Lua查找表元素过程(元表、__index方法是如何工作的)
近日开始研究Lua,在元表的使用上照猫画虎地搞了两下,实现了“面向对象”,但究其本质却略有不解,后咨询牛哥得解,特此记录. Lua的表本质其实是个类似HashMap的东西,其元素是很多的Key-Val ...
- 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找
今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...
- OpenCV基础篇之查找表
程序及分析 /* * FileName : lookup_table.cpp * Author : xiahouzuoxin @163.com * Version : v1.0 * Date : Su ...
- Speed-BI 多事实表与表间计算的应用:销售目标达成分析 另一种实现方法
在前一篇<Speed-BI多事实表与表间计算的应用(excel多Sheet关联分析):销售目标达成分析>http://www.powerbibbs.com/forum. ... 7583& ...
- OpenCV学习笔记:如何扫描图像、利用查找表和计时
目的 我们将探索以下问题的答案: 如何遍历图像中的每一个像素? OpenCV的矩阵值是如何存储的? 如何测试我们所实现算法的性能? 查找表是什么?为什么要用它? 测试用例 这里我们测试的,是一种简单的 ...
- 1.2OpenCV如何扫描图像,利用查找表和计时
查找表 颜色缩减法:如果矩阵元素存储的是单通道像素,使用C或C++的无符号字符类型,那么像素可有256个不同值. 但若是三通道图像,这种存储格式的颜色数就太多了(确切地说,有一千六百多万种).用如此之 ...
- OpenCV从入门到放弃系列之——如何扫描图像、利用查找表和计时
目的 如何遍历图像中的每一个像素? OpenCV的矩阵值是如何存储的? 如何测试我们所实现算法的性能? 查找表是什么?为什么要用它? 测试用例 颜色空间缩减.具体做法就是:将现有颜色空间值除以某个输入 ...
- Quarter square 查找表乘法器,手动建立rom
建立一个C的范围为0~255,内容是(C)2/4的查表 占用256个存储空间,但可以计算出+-127的两个数之积.传统算法需要至少127×127个存储空间. 查找表模块的建立: module lut_ ...
随机推荐
- jstree 节点拖拽保存数据库
需要jstree具有拖拽功能需要在加载jstree时添加dnd插件,具体看代码: $('**').jstree({ //plugins-各种jstree的插件引入,展示树的多样性 'plugins' ...
- PPT扁平化风格设计手册
钱文嘉:颜色选择,搭配 http://www.pptfans.cn/341917.html
- UISegmentedControl UISlider
self.view.backgroundColor = [UIColor whiteColor]; //UISegmentedControl 是iOS中的分段控件,事实上是多个button的组合视图, ...
- C#-Mdi多文档窗体及其子窗体的排列 ---ShinePans
MdiLayout枚举成员及说明 Casecade s全部Mdi层叠在父窗体 TileHorizontal 水平平铺 TitleVertical 垂直平铺 Form1.cs (mdi) using S ...
- 【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)
通常,可以用scp完成两台主机间的文件传输任务,但在主机间未建立信任关系的情况下,scp每次都需要输入密码,用起来感觉不是很方便,之前这篇笔记介绍过不用输入密码执行脚本或传输文件的方法,但对于一些临时 ...
- Android制作粒子爆炸特效
简介 最近在闲逛的时候,发现了一款粒子爆炸特效的控件,觉得比较有意思,效果也不错. 但是代码不好扩展,也就是说如果要提供不同的爆炸效果,需要修改的地方比较多.于是我对源代码进行了一些重构,将爆炸流程和 ...
- python下载IGS观测数据
最近在学习GPS数据软件处理,经常需要下载数据练习,反复去网站上很麻烦,于是就写了一个小小的爬虫,用的是韩国的服务器,使用了python中的ftplib库实现的 今天稍微改了一下代码,可以选择卫星系统 ...
- Navicat Premium 自动备份mysql和sqlserver
mysql篇: 1.点击计划 2.点击新建处理作业 3.选择需要备份的数据库,上级可用任务 4.点击保存按钮,输入保存文件名 5.保存后点击设置计划任务 6.计划里新建保存时间,应用后输入系统密码即可 ...
- hadoop集群环境搭建之zookeeper集群的安装部署
关于hadoop集群搭建有一些准备工作要做,具体请参照hadoop集群环境搭建准备工作 (我成功的按照这个步骤部署成功了,经实际验证,该方法可行) 一.安装zookeeper 1 将zookeeper ...
- mysqldump备份、还原数据库路径名含有空格的处理方法(如:Program Files)
虽然以下的方法也可以解决,不过最简单直接的,还是直接在路径前后加双引号-" ",这个方法简单有效. 首先要说明的是mysqldump.exe在哪里不重要,重要的是要处理好路径中的非 ...