正弦波信号发生器(离散采样)

正弦波发生器:
1.将连续的正弦波信号进行离散化
    设正弦波周期为T=2*pi,对一个周期的正弦波进行100次采样,则
  相应采样点的离散值为:
    sin(2*pi/100)
    sin(2*pi*2/100)
      . . .
    sin(2*pi*n/100) 0<=n<=100
      . . .
    sin(2*pi*100/100)
    对于采样点离散值的计算可以采用Matlab进行计算,程序见下。

2.将离散化后的正弦波一个整周期存储到Rom中
  (1)将离散后的数据进行定点化,Rom的规格是256x8bits,数据格式1bit符号位和7bits小数位
  (2)创建Rom

clc;
clear all;
%% 将连续的正弦波信号进行离散化
% 设正弦波周期为T=2*pi,对一个周期的正弦波进行100次采样,则
% 相应采样点的离散值为:
% sin(2*pi/100)
% sin(2*pi*2/100)
% . . .
% sin(2*pi*n/100) 0<=n<=100
% . . .
% sin(2*pi*100/100)

%% 1.设置离散化参数
T = 2*pi; %正弦波周期
N = 2^8; %采样点个数
sp = 0:(N-1); %采样点

%% 2.进行离散化采样
sin_data = sin(T*sp/N); % sin_data取值为-1至+1之间的浮点数

%% 3.将离散后的正弦波存储到Rom中
% 将离散后的数据进行定点化,
% Rom的规格是256x8bits,数据格式1bit符号位和7bits小数位
fix_point_sin_data = sin_data * (2^7-1);
fix_point_sin_data = fix(fix_point_sin_data);
% 对负数取补码,便于存储Rom中
for i=1:N
if fix_point_sin_data(i)<0
fix_point_sin_data(i) = 256+fix_point_sin_data(i);
end
end

%% 生成mif文件
fid = fopen(‘rom_256x8_init.mif‘,‘w+‘);
fprintf(fid,‘WIDTH=8;\n‘);
fprintf(fid,‘DEPTH=256;\n‘);
fprintf(fid,‘\n‘);
fprintf(fid,‘ADDRESS_RADIX=UNS;\n‘);
fprintf(fid,‘DATA_RADIX=UNS;\n‘);
fprintf(fid,‘\n‘);
fprintf(fid,‘CONTENT BEGIN\n‘);
for i=0:255
fprintf(fid,‘ %d : %d;\n‘,i,fix_point_sin_data(i+1));
end
fprintf(fid,‘END;\n‘);
fclose(fid);

  对于正弦波,如何能够将输出频率提高?离散后的正弦波采样值存储在rom中,通过对rom
进行寻址,读出存储的数据即为正弦波的采样值,因此可以通过控制对rom寻址的快慢(步长)
,来控制输出正弦波的频率。(此为DDS原理作铺垫)

时间: 2024-10-10 12:34:38

正弦波信号发生器(离散采样)的相关文章

离散采样算法---Alias采样方法

应用场景:比如一个随机事件包含4种情况,每种情况发生的概率分别为:$\frac{1}{2},\frac{1}{3},\frac{1}{12},\frac{1}{12}$,怎么产生符合这个概率的采样方法? 解决方法:Alias算法,O(1) 参考链接: [1]中文:[数学]时间复杂度O(1)的离散采样算法—— Alias method/别名采样方法 [2]英文:Darts, Dice, and Coins: Sampling from a Discrete Distribution 原文地址:ht

【MATLAB】对离散采样信号添加高斯白噪声(已知Eb/N0)

(1)首先计算已知信号序列(采样之后得到的信号)的平均功率. 该序列在第n个点处的功率为: 如果已知的信号序列中的总共的点数为N个,则该序列的平均功率为: 在MATLAB中求平均功率的方法是: Pav=sum(x.^2)/length(x); (2)第二步是求单个符号的能量.能量的定义是功率乘以时间.对于单个符号来说,因为已经被采样了,每个符号可能对应多个采样点.因此,此处需要已知符号速率. 每个符号的能量为: 在MATLAB中求单位符号能量的方法是: Eb=sum(x.^2)/(length(

图形学中的贴图采样、走样与反走样等

计算机图形学中不可避免的会涉及到图像分析与处理的相关知识,前些时间也重温了下常用到的采样.重建以及纹理贴图等内容,并对其中的走样与反走样有了更多的认识,这里小结一下. 1. 基本问题 信号的采样与重建过程中首先面临着两个基本的问题: 给定一个连续的信号g(x)以及它的离散采样信号gs(x),能否通过gs(x)来完整的描述g(x) 的信息: 如果可以,如何通过gs(x)来重建出原始信号g(x). 这些通过对信息进行频域的分析即可得到相应的结论. 2. 采样 将一处于空间域(或时域)内的信号向频域进

示波器基本原理之一:带宽

[整理自Keysight官网资料] 示波器最重要的单一特性,即带宽在频率域提供范围标示. 带宽是大多数工程师选择示波器时首先考虑的技术指标.带宽以Hz衡量,根据频率决定信号范围,以便能精确显示及进行测试. 带宽不足,则示波器将不能显示出实际信号的准确表现.例如,信号的幅度也许会不准确.边缘也许会不平整.波形细节情况也许会丢失. 1. 示波器带宽的定义 如图 1 所示,所有示波器都会在较高频率时出现低通频率响应衰减.大多数带宽技术指标在 1 GHz 及以下的示波器通常会出现高斯响应,并在 -3 d

我从事过的设计(文件夹)

我的工作:设计(解决方式) . 包含软件和硬件或由软件+硬件组成的系统 . 下面将介绍我几十年来从事过各种设计,包含为教学.科研和生产进行的设计.个人业余爱好设计,以及为社会或他人提供的义务设计,因这些设计都是为解决某个问题而思考出来的办法,所以也可称为解决方式. 设计包含软件和硬件,也有软硬一起构成的系统.硬件设计包含功能.逻辑.线路.PCB(印刷线路板).设备总体外形等,都要一一考虑,大都在上世纪60-70年代.80年代后都为软件系统设计,当中80年是在PDP11或VAX750等小型机上用F

傅里叶变换通俗解释及快速傅里叶变换的python实现

通俗理解傅里叶变换,先看这篇文章傅里叶变换的通俗理解! 接下来便是使用python进行傅里叶FFT-频谱分析: 一.一些关键概念的引入 1.离散傅里叶变换(DFT) 离散傅里叶变换(discrete Fourier transform) 傅里叶分析方法是信号分析的最基本方法,傅里叶变换是傅里叶分析的核心,通过它把信号从时间域变换到频率域,进而研究信号的频谱结构和变化规律.但是它的致命缺点是:计算量太大,时间复杂度太高,当采样点数太高的时候,计算缓慢,由此出现了DFT的快速实现,即下面的快速傅里叶

压缩感知(八)

奈奎斯特采样定理NOTE: 定理:为了不失真地恢复模拟信号,离散信号系统的采样频率不小于模拟信号频谱中最高频率的2倍. 在时域上,频带为F的连续信号f(t)可用一系列离散的采样值f(t1),f(t1+Δt),f(t1+2Δt)…来表示,只要这些采样点的时间间隔Δt<=1/2F,便可根据各采样值完全恢复原始信号. 在频域上,当时间信号函数f(t)的最高频率分量为fmax时,f(t)的值可由一系列采样间隔小于或等于1/2fmax的采样值来确定,即采样点的重复频率为fs>=2fmax. 采样定理指出

iPhone屏幕尺寸、分辨率及适配

目录(?)[+] 1.iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS 2.4 inches (62.1 mm) 4.5 inches (115.5 mm) 3.5-inch 320x480 @1x 320x480 163 4(s) 2.31 inches (58.6 mm) 4.5 inches (115.2 mm) 3.5-inch 320x480

基于AR谱特征的声目标识别

本文第一部分先解释AR谱,但并不会给出太多的细节,第二部分介绍几种常见的语音中的特征,有些在之前的博文中已经用过,诸如过零率.第三部分给出实际操作的过程及识别的效果.本文的目标是通过对DSP采集的声音信号提取特征,识别卡车和飞机. 转载请注明出处: xiahouzuoxin.github.io 关于AR谱 AR模型全称Auto-Regression Model,是通过参数计算信号功率谱的一种方法.在Matlab中计算AR谱很简单:假设有一个1024个点的车辆信号x, y = pyulear(x,