标签 FPGA 下的文章

综述

本文将介绍如何将DesignStart Eval的示例SoC移植到FPGA上,该SoC使用M0内核。在开始之前,简明阐述本文实现思路,移植可分为两部分:硬件与软件。

  • 硬件移植:Verilog代码的移植、综合、布局布线与调试;在DesignStart Eval的包文件中,...\systems\cortex_m0_mcu\verilog文件夹下实现的有一参考示例,复制所需文件即可。
  • 软件移植:基于CMSIS与参考代码制作自己的库函数,寄存器的配置均需要与RTL中配置的保持一致。

移植该项目时,参考了许多官方文档与第三方书籍,其中最有价值的列举如下:

  • DUI0926B_cortex_m0_designstart_eval_guide.pdf,该手册介绍了示例SoC的结构与细节,用于硬件搭建。
  • DDI0479C_cortex_m_system_design_kit_r1p0_trm.pdf,该手册介绍了CMSDK系统模块,在后期构建库函数时颇有用处。
  • AMBA总线规范中文版V2.0.pdf,介绍了AMBA规范下各个接口的协议。
  • ARM Cortex-M0全可编程SoC原理及实现.pdf,总体上描述了M0的技术细节。

- 阅读剩余部分 -

设计目标

在本文中,我们将在XO2-4000HC开发平台上,借助外部高速DAC实现:

  • DC~20MHz的正弦波,方波,三角波,锯齿波
  • 通过旋转编码器控制产生的信号频率与幅度(1 Vpp)
  • 波形的信息可以实时通过OLED显示屏查看

DDS发生器

DDS原理及实现

DDS全称为直接数字式频率合成计(Direct Digital Synthesizer),将需要输出的数据储存在ROM中,按照一定的频率去读取后通过DAC输出即可。一个完整的DDS模块应当包括:查找表、相位控制器、DAC、外部滤波器,后文将详细叙述。如果希望更加直观地了解到DDS的工作原理以及设计细节,可以访问ADI DDS仿真器,在该在线工具中你可以直观地看到每个周期的采样过程以及后置滤波器的原理。

DDS实现信号发生器需要以下参数:

  • 信号的采样率:根据奈奎斯特采样定理$f_s\ge2f_h$,理论上每个周期采样两个点即可恢复原始波形。但是请注意,以正弦波为例采样波形此时为三角波,这就对滤波器的设计提出了很高的要求。因为在实际应用中我们常常会在一周期采样多个点,本设计中采样率为120MHz,即一个周期采样6个点。
  • 相位控制字宽度:相位控制字决定了信号采样的增量间隔,理论上一个信号的最小分辨率$res=\frac{f_s}{2^n}$,在本设计中取28 bit以达到0.447Hz左右的频率分辨率。
  • 相位控制字增量:在上文中我们确定了频率的分辨率,将频率与分辨率相除即可得到单位增量。

ADI DDS仿真器

- 阅读剩余部分 -

在本文中,我们将使用硬禾学堂的“基于iCE40UP5K的FPGA学习平台”开发板来实现一个Σ-Δ ADC采集,并制作一个简易的电压表。在了解相关内容与原理时,发现了许多学习过的知识,通信/电信人狂喜。

目标

基于Lattice iCE40UP5K实现一个Σ-Δ ADC采集,采集后的电压将会在OLED屏幕上显示,实现一个简易的电压表,效果如下图所示:

简易电压表效果图

- 阅读剩余部分 -

在模拟通信系统中,基带信号通过对载波波形幅度,相位,频率的调制以达到将信号在载波上传输信息的目的。根据基带信号的类型可分为:模拟调制 & 数字调制。

调制原理

本文所述AM(Amplitude Modulation)调制,即是模拟信号对载波幅度进行调制,通过与载波信号相乘来进行频谱搬移。其中第一个公式为时域表达式,第二个公式为频域表达式。

$$ S_{AM}=(A_0+m(t))*cos(w_ct+\phi_c) $$

$$ S_{AM}(\omega)=\frac{A_0}{2}*[M(\omega+\omega_c)+M(\omega-\omega_c)] $$

在上文的公式中$m(t)$为基带信号(一般为低频信号),$A_0$为直流偏置,用来将基带信号叠加到正半轴,使得在调制后信号仍然保持着$m(t)$的包络。其中$cos(w_ct+\phi_c)$为载波信号,$\omega_c$为载波角频率。

在描述AM信号的调制深度时,常定义为$\frac{m(t)_{max}}{A_0}$,当调制深度大于1时为过调幅现象,此时因为存在相位突变,调制后的信号包络无法反映原始信号$m(t)$。

- 阅读剩余部分 -