FPGA如何利用查表法得到某角度所对应的正弦值、余弦值
1 实现思路2 具体实现步骤2.1 MATLAB生成sin.coe文件和cos.coe文件2.2 将sin.coe和cos.coe文件分别写入ROM核2.3添加ILA2.4 新建源文件top,编写源文件2.5 新建约束文件,编写约束文件
3 结果3.1 结构图3.2结果分析
4 工程文件
1 实现思路
1、MATLAB生成不同角度的正弦值sin.coe文件和余弦值cos.coe文件; 2、将sin.coe和cos.coe文件分别写入ROM核; 3、查表得到角度所对应的正弦值、余弦值。
2 具体实现步骤
2.1 MATLAB生成sin.coe文件和cos.coe文件
close all;
clear all;
clc;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 参数定义
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% L=90; % 采样点数
Quantify_bit=16; % 量化位数
fc=10e6; % 信号频率
fs=65e6; % 采样频率
yinzi=100; % 缩减因子,避免出现 D 必须为小于 flintmax 的非负整数。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 产生信号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
theta=0:1:360; % 度
L=length(theta); % 采样点数
y=cosd(theta);
% y=st/max(abs(st)); % 归一化
% y=st/yinzi;
yt=round(y*(2^(Quantify_bit-1)-1)); % 12bit量化
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% MATLAB生成coe文件
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 在.coe文件中
% 第一行为定义数据格式, 2代表 ROM 的数据格式为二进制。
% 从第 3 行开始到第最后一行,是这个 L(数据长度为1024)* ADC_bit(16bit) 大小 ROM 的初始化数据。
% 第一行到倒数第二行的数字后面用逗号,最后一行数字结束用分号。
fid=fopen('cos.coe','w'); % w表示write
fprintf(fid,'Memory_Initialization_Radix = 2;\r\n'); % 二进制
fprintf(fid,'Memory_Initialization_Vector = \r\n');
for p=1:L
B_s=dec2bin(yt(p)+(yt(p) |