项目三:信号源的FPGA实现

本文以Altera公司生产的Cyclone IV系列的EP4CE15F17C8为主芯片的CRD500开发板作为项目的硬件实现平台,并以Quarter 18.1和ModelSim为开发工具和仿真工具。

目录

一、项目要求

二、设计实现步骤

三、实现

1、matlab下模拟信号源数据的产生

2、matlab下模拟信号源数据的量化

3、信号源的FPGA实现

(1)IP核参数设置

(2)时钟信号

(3)信号源

(4)编译下载


一、项目要求

项目名称:MLS测角信号的FPGA实现

项目要求:采用FPGA+D/A的方式,产生MLS的测角信号。具体要求为:测角信号由往、返扫描脉冲与噪声组成,信噪比为+3dB,往、返扫描脉冲为宽度是200us的钟形脉冲(用频率为5KHz的余弦波形表示),两个脉冲间的间隔为1800us,采用matlab生成信号源数据时,采样频率为6.25MHz。

二、设计实现步骤

采用matlab辅助设计模拟信号源

1、在matlab下产生模拟信号源的数据

2、对模拟信号源数据进行量化

3、利用量化后的、满足单口ROM格式要求的数据(必须是无符号二进制数据)生成.mif文件

4、基于.mif文件与单口ROM IP核,在quartus下产生时钟、地址等信号,实时读取数据,送到D/A转换器

5、在时钟作用下完成D/A转换,得到模拟信号

三、实现

1、matlab下模拟信号源数据的产生

Matlab 复制代码
% MLS_signal.m

clc;clear;close all;
N=12;                % 数据量化位数
fs=6.25*10^6;        % 采样率
delta=0.16*10^-6;    % 采样间隔    
for n=1:1000
    s(n)=0;
end
for n=1001:2251
    s(n)=cos(2*pi*(n-1001)*5*10^3*delta+pi)+1;
end
for n=2252:12251
    s(n)=0;
end
for n=12252:13502
    s(n)=cos(2*pi*(n-12252)*5*10^3*delta+pi)+1;
end
for n=13503:14503
    s(n)=0;
end
snr=3;                % 信噪比
randn('state',sum(100*clock));
noise=randn(size(s));
noise=noise-mean(noise);
signal_power=1/length(s)*sum(s.*s);            % 计算信号平均功率
noise_variance=signal_power/(10^(snr/10));     % 计算噪声方差(功率)
noise=sqrt(noise_variance)/std(noise)*noise;   % 计算噪声幅度
x=s+noise;
long=0.16*10^-6:(0.16*10^-6):(14503*0.16*10^-6);
plot(long,s);
xlabel('时间/s');ylabel('幅度/v');
figure;
plot(long,x);
xlabel('时间/s');ylabel('幅度/v');

2、matlab下模拟信号源数据的量化

Matlab 复制代码
% Q_MLS_signal.m 
% 对产生的信号进行量化,量化结果存入.mif文件,以用于生成信号源
x1 = (x/max(abs(x))+1)/2;    % 归一化正数(0~1)
Q_x = round(x1*(2^N-1));     % 12位量化
figure;
plot(long,Q_x);
xlabel('时间/s');ylabel('幅度/v');
fid=fopen('D:\Verilog\txhFPGA\signal_produce(iir)\signal_rom.mif','w');
fprintf(fid,'WIDTH=12;\r\n');
fprintf(fid,'DEPTH=14503;\r\n\r\n');
fprintf(fid,'ADDRESS_RADIX=UNS;\r\n');
fprintf(fid,'DATA_RADIX=UNS;\r\n');
fprintf(fid,'CONTENT BEGIN\r\n');
for nn=0:length(Q_x)-1
    fprintf(fid,'%d:%d;\r\n',nn,Q_x(nn+1));
end
fprintf(fid,'END;\r\n');
fclose(fid);

量化后生成的12位无符号二进制数据存储在signal_rom.mif文件中

matlab产生的模拟信号源波形和经量化后的波形分别如下所示

3、信号源的FPGA实现

(1)IP核参数设置

在IP Catalog中输入 ROM ,再双击"ROM:1-PORT",进入创建IP核界面

上图中的"signal_rom.mif"文件是用matlab产生的

单击"Finish"按钮,完成IP核的设计

在设置的文件夹中可查看生成的IP核,打开"signal_produce_IP.v",可查看该IP核的输入、输出端口信号等详细信息。

(2)时钟信号

Matlab 复制代码
// clk_produce.v 程序
// 功能:产生6.25MHz的时钟频率,作为单口ROM读取数据的时钟以及D/A转换(D/A时钟与A/D时钟应一致)
module clk_produce(rst,gclk,clk);
	input rst;    // 复位信号,高电平有效
	input gclk;   // 板载信号,50MHz
	output clk;   // 8分频时钟
	wire rst,gclk;
	reg clk=1'b0;
	reg[2:0] count = 3'b000;
	always @(posedge gclk)
		begin
			count=count+3'd1;
			if(count==3'd4)
				begin
					clk=~clk;
					count=3'd0;
				end
		end
endmodule

(3)信号源

Matlab 复制代码
// 信号源signal_produce.v 程序
// 功能:产生循环读取单口ROM数据的地址,并将数据的高八位送到外部D/A转换器(存储的数据为12位无符号二进制数,外部D/A转换器要求输入数据位8位无符号二进制数)
module signal_produce(rst,gclk2,clk2,da2_data);
	input rst;
	input gclk2;            // 板载时钟为50MHz
	output clk2;            // 8分频时钟,6.25MHz
	output [7:0] da2_data;  // 送给DA2的8位无符号二进制整数
	wire unsigned[11:0] signal;
	reg[13:0] address = 14'b00000000000000;
	always @(posedge clk2)    // 循环产生ROM存储单元的地址
		begin
			address=address+14'b00000000000001;
			if(address==14'b11100000000000)
				begin
					address=14'b00000000000000;
				end
		end
clk_produce u1(.rst(rst),.gclk(gclk2),.clk(clk2));
signal_produce_IP u2(.address(address),.clock(clk2),.q(signal));
assign da2_data=signal[11:4];    // 高8位数据作为外部D/A转换器的输入
endmodule

(4)编译下载

将 signal_produce.v 作为顶层设计,创建项目,开始编译

编译无误后,绑定引脚(根据FPGA器件上D/A转换器引脚对应关系绑定)

引脚绑定后,再次编译,将编译后生成的.sof程序下载到FPGA中运行,采用示波器观测的D/A转换器输出波形。

该图片与matlab生成的模拟信号源波形一致,验证项目成功

相关推荐
9527华安13 小时前
FPGA多路MIPI转FPD-Link视频缩放拼接显示,基于IMX327+FPD953架构,提供2套工程源码和技术支持
fpga开发·架构·音视频
上理考研周导师13 小时前
【FPGA】ISE13.4操作手册,新建工程示例
fpga开发
技术小白爱FPGA16 小时前
Xilinx 平台 drp 动态调节 mmcm
fpga开发
北京太速科技股份有限公司19 小时前
太速科技-889-基于RFSOC XCZU49DR的 16T16R的软件无线电硬件
fpga开发
stm 学习ing20 小时前
HDLBits训练5
c语言·fpga开发·fpga·eda·hdlbits·pld·hdl语言
超能力MAX20 小时前
IIC驱动EEPROM
单片机·嵌入式硬件·fpga开发
吉大一菜鸡1 天前
FPGA学习(基于小梅哥Xilinx FPGA)学习笔记
笔记·学习·fpga开发
9527华安2 天前
FPGA实现MIPI转FPD-Link车载同轴视频传输方案,基于IMX327+FPD953架构,提供工程源码和技术支持
fpga开发·架构·mipi·imx327·fpd-link·fpd953