1、NCO原理

在通过相位累加产生地址信息时,通常需要输出当前时刻的相位值所对应的正弦值,即以参考频率源对相位进行等可控间隔采样。

-产生信号频率,-系统时钟(采样频率),-相位累加器的位数,-频率控制字

根据Nyquist准则,允许输出的最高频率为

2、任意三角波

(1)首先在matlab生成存入ROM的NCO码表(.coe)文件,有固定格式

n = 0:4095;             %相位累加器位数N为12
costable = cos(2*pi/4096*n);
costable = round(costable*64);      %量化
fid = fopen('costable.coe','wt');
fprintf(fid,'memory_initialization_radix = 10;\nmemory_initialization_vector = ');
for i = 1 : 4096fprintf(fid,'\n');fprintf(fid,'%4d,',costable(i));
end

(2)将.coe文件导入Vivado ROM中,Vivado中需要写两个模块相位累加器和调用IP核输出波形

相位累加器代码如下:

`timescale 1ns / 1psmodule PhaseAdder(input               sysclk,input               rstn,input   [31:0]      carr_freq,   //频率控制字,相位累加步长input               en,output  [11:0]      phase);reg [31:0] phase_reg;always@(posedge sysclk or negedge rstn)beginif(!rstn)phase_reg <= 32'd0;elsebeginif(en)phase_reg <= phase_reg + carr_freq;  //溢出循环endendassign phase = phase_reg[31:20];
endmodule

这里需要注意,根据波形生成公式越大,频率精度越高,本应需要深度和生成点数相同的ROM。但是可以通过截位运算用4096深度的ROM来装码表,计算频率控制字还是要通过来计算,截位产生的误差为

例化ROM核后输出波形代码如下:

module cos_gen(
input sysclk,
input rstn,
input en,
input [31:0] cos_freq,output signed [7:0] cos_wave,);wire  [11:0]   phase;
PhaseAdder u_PhaseAdder
(.sysclk      (sysclk),.rstn        (rstn),.cos_freq    (cos_freq),.en          (en),.phase       (phase)
);NCO_COS u_NCO_COS
(.a      (phase),.spo    (cos_wave)
);   endmodule

3、任意方波(时钟信号)

方波信号产生相较于三角波而言比较简单,可以省略生成码表的步骤(因为只有01),可以只通过Verilog代码产生。

`timescale 1ns / 1psmodule ClkGen_unit(input clk_96m,
input rst_n,
input en,
input [31:0] code_nco_word,output [7:0] code_clk_reg,);reg [31:0] code_nco;
reg code_nco_h32;
reg [7:0] code_clk_reg_c; always @(posedge clk_96m)
beginif (rst_n==0) begincode_nco <= 0;end else beginif (en==1) begincode_nco<=code_nco+code_nco_word;end else begincode_nco<=0;endend
end    always @(posedge clk_96m)
beginif (rst_n==0) begincode_nco_h32 <= 0;end else begincode_nco_h32<=code_nco[31];end
end always @(posedge clk_96m)
beginif (rst_n==0) begincode_clk_reg_c <= 0;end else begincode_clk_reg_c[0]<=(~code_nco[31]) & code_nco_h32;  //方波整形,改变占空比code_clk_reg_c[7:1]<=code_clk_reg_c[6:0];       //产生多级延迟方波信号,方便自行选择end
end
assign code_clk_reg=code_clk_reg_c;endmodule

本代码增加了两个比较巧妙的步骤:

(1)对方波进行整形,改变其占空比;

(2)产生多级延迟方波信号,方便自行选择。

FPGA学习(1)NCO产生任意三角波、方波相关推荐

  1. STM32单片机可变频率幅度DDS信号发生器正弦波三角波方波AD9833

    实践制作DIY- GC0094-DDS信号发生器 一.功能说明: 基于STM32单片机设计-DDS信号发生器 功能介绍: 硬件组成:STM32F103C系列最小系统板 +LCD1602显示器+AD98 ...

  2. MATLAB产生三角波

    原文地址:Simulink产生三角波的三种方法 作者:xianfa110 在这里我采用两种方法产生三角波,并做成了Simulink模块形式,以后可直接调用. 模块: 参数设置: 第一种方法,基于方波产 ...

  3. 单片机c语言三角波采样点,E题_江苏赛区_南京信息工程大学——放大器非线性失真分析装置 一等奖...

    放大器非线性失真研究装置(E题) 摘 要 本设计是一个能产生非线性失真的晶体管放大器,**由两级共射放大电路以及一级推挽电路构成.可以通过调节放大器内各个电阻的阻值,来变更静态工作点,以及通过短路推挽 ...

  4. python实现方波,三角波的合成与分析

    ###最近matlab在一些军工学校已经被禁了,(据说哈工大已经不能用matlab了)最近学院的一些学术作业也都要转移到python平台来实现了,最近会更新一些原本用matlab做着很简单,到了pyt ...

  5. 关于BUCK降压的一些学习笔记2-->滞回比较器产生三角波

    初出茅驴,说的有不对的地方,欢迎大家共同探讨交流. 在上一篇文章中我说到了P管的开关控制BUCK电路.P管的前级驱动需要PWM驱动,当然这个PWM的占空比是需要可变化的. PWM是数字量,只有高和低两 ...

  6. C语言及gnuplot任意波形产生及作图-以三角波为例

    以三角波为例.首先编制计算周期三角波的C函数.要求:三角波参数与正弦函数相似,标准周期为2π2\pi2π,占空比ppp(上升时间比周期)表示三角波上升下降段的比例,p=0.5p=0.5p=0.5为上升 ...

  7. python正弦波和等腰三角波_Python科学计算——任意波形拟合

    任意波形的生成 (geneartion of arbitrary waveform) 在商业,军事等领域都有着重要的应用,诸如空间光通信 (free-space optics communicatio ...

  8. Verilog学习脚印3-简单状态机(三角波)

    Verilog学习脚印3-简单状态机(三角波) 附:verilog语法笔记(持续更新ing) 目录 bash命令 实例1:三角波发生器 电路原理(来自B站-北交李金城老师的PPT,侵删) 代码实现与验 ...

  9. 如何用FPGA输出正弦波、三角波等

    如何用FPGA输出正弦波.三角波等 一.开发工具 二.步骤 1.设置ROM IP核 2.程序编写 一.开发工具 1. 软件平台:Quartus ll 2.芯片:不重要 二.步骤 1.设置ROM IP核 ...

最新文章

  1. Vim as Python IDE on windows(转)
  2. aspx后台调用前台jquery_Jquery Ajax调用aspx页面方法
  3. Java线程池的拒绝策略
  4. 2259: matrix
  5. 操作系统:提升电脑开机速度的15个小技巧
  6. 关于MySQL 查询表数据大小的总结
  7. ODB——基于c++的ORM映射框架尝试(安装)
  8. Win7旗舰版系统时间不准确怎么办
  9. 盈利模型的内容都有哪些?
  10. 零起点英语_【零起点英语】第154讲:Large Feet 大脚丫
  11. git配置取消代理_「高手」如何优雅的解决 git 超时
  12. 一文读懂python数据分析_一文读懂聚类算法
  13. LevelDb 实现原理(转载)
  14. Windows上将linux目录映射网络驱动器
  15. Visual Studio爆炸! -VS2010 SP1 * BETA *已发布,上下文
  16. python 占用内存过高_PyCharm如何优化?太占内存了,太慢了
  17. WorldPress博客系统更换域名导致博客访问出错的解决方案
  18. 怎样让PHP提示错误信息
  19. 手机显示未连接网络连接到服务器是怎么回事,苹果浏览器显示未连接互联网是什么回事...
  20. 2021哈工大计算机专业考研参考书,哈尔滨工业大学计算机专业考研参考书目推荐...

热门文章

  1. 机器学习 推荐系统常见指标计算
  2. iphone传输 android,还有这个功能?iPhone竟然可以传文件到安卓机?
  3. 元宇宙中的法律与自我监管
  4. 新星计划第一期:如何写作快速涨粉变现
  5. 创业方向:O2O及移动社交 from 沈博阳
  6. java通用文件换行符_java通用文件换行符
  7. 中国床和床垫市场现状研究分析与发展前景预测报告(2022)
  8. mysql数据库设计四大范性_数据库篇-mysql详解( 四 )之范式与数据高级骚操作
  9. 腾讯T3亲自讲解!Android开发者跳槽面试,建议收藏
  10. 火狐浏览器RESTED插件问题