基于labview和fpga的信号发生器

第1章:LabVIEW FPGA前世今生《LabVIEW ZYNQ FPGA宝典》 由于工程师们要同时面对ARM和FPGA双重开发,难度和工作量都是难以想象的,传统的ZYNQ芯片程序开发通常需要两个人协同开发:一人负责PSARM)裸机或者Linux程序开发;另一人负责纯逻辑PL也就是FPGA部分开发,人力成本极高。 阅读详情

链接:https://pan.baidu.com/s/1JPUTi5nAWVgTLcPWpMde_Q
提取码:1234

基于labview和fpga的信号发生器
要求:
【1】正弦波、方波、锯齿波、三角波。
【2】频率、幅值、相位可调,调节步进值:频率0.1,幅值0.1,相位1;
【3】频率最高:20k;峰值最高:3.3。
【4】波形选择控制字 频率控制字 相位控制字幅值控制字由labbiew产生然后发送给fpga进行控制。
【5】串口9600,数据协议由FPGA进行确定。
在这里插入图片描述

module DDS(
			clk,
			reset_n,
			dds_data_out,
			set_waveform,
			set_f,
			set_a,
			set_p
          );
input         clk;//时钟输入
input         reset_n;//复位输入
input  [1:0]  set_waveform;//2比特,占用1帧,由串口的第1帧数据的第1、2比特传入
input  [31:0] set_f;//21比特,占用3帧,由串口的第2、3、4帧数据传入,范围为8590~1717987,对应100Hz到20K
input  [6:0]  set_a;//7比特,占用1帧,由串口的第5帧的前7个比特数据传入,范围为1~100
input  [9:0]  set_p;//10比特,占用2帧,由串口的第6、7帧数据传入,,范围为1~1023
output [9:0]  dds_data_out;

      
/**************连接线***************/
wire   [31:0] f32_bus;//AC频率控制字输入
wire   [31:0] reg32_out;//32位寄存器输出
wire   [31:0] reg32_in;//32位寄存器输入
wire   [8:0]  reg10_in;
wire   [8:0]  reg10_out_address;
/**************缓存寄存器******************/
wire   [9:0]  sin_data;
wire   [9:0]  tri_data;
wire   [9:0]  squ_data;
wire   [9:0]  saw_data;
reg    [9:0]  dds_data_reg; 
// reg    [20:0] set_f_reg;     
reg    [31:0] set_f_reg;     
/***********************************/

// assign f32_bus[31:21] = 11'd0;//初始化,高位置低
// assign f32_bus[20:0]    = set_f_reg;//低位可以设置DDS的输出频率
assign f32_bus = set_f_reg;//低位可以设置DDS的输出频率
/*********************元件例化************************************/
        adder_32 adder_32_1(
                    .data1(f32_bus),//设置频率值
                    .data2(reg32_out),
                    .sum(reg32_in)
                    );
        reg32    reg32_1(
                    .clk(clk),
                    .reset(reset_n),
                    .data_in(reg32_in),
                    .data_out(reg32_out)
                    );
/***********************设置相位***************************/
// 功能:设置相位
// 说明:
    // set_p设置相位,范围为0~1023,对应的相位范围为0~359,
    // 比如设置为1时,对应的相位为0.35,设置为100对应为35,设置为1000,对应350
// ***********************************************************
        adder_10 adder_10_1(
                    .data1(set_p),//设置相位值
                    .data2(reg32_out[31:23]),
                    .sum(reg10_in)
                    );
        reg_10   reg_10_1(  
                    .clk(clk),
                    .reset(reset_n),
                    .data_in(reg10_in),
                    .data_out(reg10_out_address)
                    );
/*****************波形选择*******************************************/
        sin_rom  sin_rom_1(.address(reg10_out_address),.clock(clk),.q(sin_data));//正弦
        tri_rom  tri_rom_1(.address(reg10_out_address),.clock(clk),.q(tri_data));//三角波
        squ_rom  squ_rom_1(.address(reg10_out_address),.clock(clk),.q(squ_data));//方波
        saw_rom  saw_rom_1(.address(reg10_out_address),.clock(clk),.q(saw_data));//锯齿波
/***********************设置波形***************************/
// 功能:设置波形
// 说明:
    //set_waveform设置波形,2比特,占用1帧,由串口的第1帧数据的第1、2比特传入
        // 2'b00://正弦波
        // 2'b01://三角波
        // 2'b10://方波
        // 2'b11://锯齿波
// ***********************************************************
/***********************设置频率***************************/
// 功能:设置频率
// 说明:
    //set_f设置频率
    //设置范围为100Hz到20KHz,对应set_f范围为8590~1717987
    // 其他频率值对应文件《频率控制字.xlsx》里面的公式来计算
    // M=2^N*Fout/Fclk,
    // Fout为要输出频率,Fclk为板子的时钟50M,
    // N位相位累加器的位宽32bit,M为频率控制字
// ***********************************************************
    always @(*)
      begin 
        case (set_waveform)
          2'b00://正弦波
               begin 
                 dds_data_reg <= sin_data; 
                 set_f_reg <= set_f;//设置范围为100Hz到20KHz
               end
          2'b01://三角波
               begin
                 dds_data_reg <= sin_data;// tri_data
                 set_f_reg <= set_f;////设置范围为100Hz到20KHz
               end
          2'b10://方波
               begin
                 dds_data_reg <= sin_data;//方波 squ_data
                 set_f_reg <= set_f;////设置范围为100Hz到20KHz
               end
          2'b11://锯齿波
               begin
                 dds_data_reg <= sin_data;//锯齿波 saw_data
                 set_f_reg <= set_f;////设置范围为100Hz到20KHz
               end
        default:
               begin
                  dds_data_reg <= sin_data;//正弦波
                  set_f_reg <= set_f;//设置范围为100Hz到20KHz
               end
        endcase;
      end 
/***********************设置电压幅值***************************/
// 功能:设置电压幅值
// 说明:
// 设置电压幅值,调节为0.033,比如发送幅值控制字为1,
// 则对应幅值为0.033,但是这个峰值太小了,发送100则对应峰值为3.3V
// ***********************************************************
reg    [19:0] dds_data_r1; 
always @(posedge clk or negedge reset_n)
begin
    if(!reset_n)
    begin
        dds_data_r1 <= 20'd0;
    end
    else
    begin
        dds_data_r1 <= dds_data_reg * 80;//set_a
    end
end

assign dds_data_out = dds_data_r1 / 8'd100;
endmodule
labview fpga开发环节 阅读详情

相关推荐

别再手动调波形了!用LabVIEW 2023快速搭建一个多功能信号发生器(附完整VI源码)

本文详细介绍了如何利用LabVIEW 2023快速构建多功能信号发生器,包括基础框架搭建、高级功能扩展和性能优化技巧。通过图形化编程,开发者可以轻松实现专业级信号生成,适用于电子工程和自动化测试场景,大幅提升工作效率。附完整VI源码,助你快速上手。

weixin_29214691的博客 109

LabVIEW_FPGA开发指导1-2-3

学习Labview FPGA的好资料,非常有用的。

crio电压采集 labview_用一颗“很小的FPGA”搞定可调电压源、信号源、示波器、频率计... 寒假在家一起练(3)...

今天揭晓“寒假在家一起练”的第3个项目 - 用一个仅有14条I/O腿的FPGA最小系统模块实现几种仪器的功能,并且要有控制界面。这款FPGA - Lattice XO2-1200跟我们Lattice版本的小脚丫用的是一个系列,只是资源更少,虽然很多人将这个系列的FPGA归类为PLD,觉得还不够格到被称之为FPGA,但其实它已经足够强大,你做完这个项目就会体会到,再也不要迷信那些高端的东东...

weixin_39976153的博客 575

【LabVIEW FPGA图形化】 ngc、edf网表文件的编写:LED流水灯

什么是FPGA图形化设计,labviewFPGA图形化网表文件的生成,labviewIP集成节点的生成,ngc、edf网表文件的编写,Verliog语言在labview下的调用,ISE调用edf网表文件。

weixin_41882741的博客 4832

信号发生器与LabVIEW同步时序全面讲解

深入解析信号发生器如何与LabVIEW实现精确同步,掌握关键时序控制技术,提升测试系统稳定性与测量精度,适用于自动化测试与数据采集场景。

weixin_42577735的博客 358

LabVIEW FPGA PCIe开发讲解-7.3节:FPGA PCIe DMA总线通信开发过程(3个步骤)

LabVIEW FPGA PCIe开发讲解-7.3节:FPGA PCIe DMA总线通信开发过程(3个步骤) 要想开发出一个完整的基于PCIe通信的FPGA板卡,需要经历以下3个步骤才能算是完成。 首先,用户需要根据实际情况,编写FPGA芯片里面的逻辑代码,比如做一个基于PCIe传输的DAQ采集卡,那么用户需要在FPGA里面利用LabVIEW编写一个ADC采集程序,然后将采集到的数据通过FIFO转移到我们封装出来的PCIe CLIP对应的上行通道里面,或者将上位机下发的数据从FPGA FIFO里面读取出来.

qq_40694786的博客 5407

NI RF 无线设计与测试产品 ,你所需要了解的一切

随着无线通信的界限不断突破,NI专门针对快速原型验证和生产测试提供了各种软件无线电设备、发生器、分析仪和收发仪。

凡森 924

使用LabVIEW远程操控信号发生器操作指南

掌握如何利用LabVIEW实现对信号发生器的远程操控,提升测试自动化效率。通过清晰步骤讲解与实际案例,帮助用户快速搭建通信连接并发送指令,充分发挥信号发生器在复杂环境中的应用潜力。

weixin_42103128的博客 793

基于LabVIEW的多通道信号发生器项目应用

利用LabVIEW强大的图形化编程能力,构建高效稳定的多通道信号发生器系统,灵活生成各类测试信号,广泛应用于工业检测与科研实验中,提升信号发生器的集成度与可扩展性。

weixin_29940495的博客 986

LabVIEW FPGA教程:FPGA开发

在本教程中,我们将介绍如何使用LabVIEW FPGA进行FPGA开发,并提供相应的源代码示例。通过深入学习LabVIEW FPGA文档和示例,您可以进一步扩展您的FPGA开发能力。LabVIEW FPGA提供了简单的部署工具,可帮助您将代码烧录到FPGA芯片中。LabVIEW FPGA提供了硬件连接控制和调试功能,以帮助您验证FPGA的正确性和性能。在LabVIEW FPGA中,您可以使用各种节点来实现不同的功能。希望本教程能为您提供有关LabVIEW FPGA的基本了解,并帮助您开始进行FPGA开发。

PodProgram的博客 2276

【LabVIEW FPGA入门】LabVIEW FPGA 实现SPI通信协议

SPI 是一种以全双工方式运行的同步串行数据链路。也就是说,携带数据的信号同时在两个方向上传播。设备使用主/从协议进行通信,其中主设备启动数据帧。当主设备生成时钟然后选择从设备时,数据可以同时在一个或两个方向上传输。由主设备和从设备决定接收到的字节是否有意义。这可能需要设备丢弃“仅发送”帧中接收到的字节或为“仅接收”帧生成虚拟字节。时钟 (SCLK)- 该信号由主机生成。传输中的其他信号根据该时钟的边沿时序而变化。主数据输出,从数据输入(MOSI)——该线是从主设备到从设备的输出。

weixin_43894265的博客 3277

PathLoss.v5.0 1CD(为频率在 30 MHz to 100 GHz之间的无线电通讯的通道设计工具)

PathLoss.v5.0 1CD(为频率在 30 MHz to 100 GHz之间的无线电通讯的通道设计工具)(为频率在 30 MHz to 100 GHz之间的无线电通讯的通道 设计工具) FloorPlan.3D.v12.2.60 1CD(整个房屋设计从概念到整个设计完成所需并且比较优越的工具) Floorplan 3D Design Suite是一套完

cadworx2016的博客 1558

LabVIEW+FPGA虚拟仪器平台设计与协同实现

虚拟仪器是一种将硬件功能软件定义的测量系统,其核心在于上位机与可编程逻辑器件的深度协同。LabVIEW作为图形化系统设计平台,结合FPGA可实现微秒级确定性响应、多通道同步采集与现场重构能力。技术关键在于软硬接口对齐、跨时钟域同步处理、DDS相位累加器位宽优化及DMA FIFO数据流调度。典型应用场景涵盖工业实时检测、教学实验平台与原型验证系统。本文聚焦LabVIEW-FPGA协同架构落地中的RS-232通信可靠性与DDS波形发生精度两大工程痛点,提供从Verilog建模、IP接口绑定到Host VI数据协

weixin_29176179的博客 147

基于LabVIEW的虚拟信号发生器设计与实现

你以为这只是个教学演示?这套系统已经在多个实际项目中落地:- 🔬 高校电子实验室:替代老旧信号源,成本降低80%- 🏭 工厂自动化测试线:集成到产线校准流程,每日节省2小时人工- 🎧 音频设备研发:配合DAQ卡做频响测试,精度达0.1dB它的价值不仅在于“省钱”,更在于灵活性、可扩展性和可维护性。你可以轻松加入新功能:- 添加噪声叠加- 实现AM/FM调制- 接入真实DAC输出- 联网远程控制。

weixin_36231030的博客 589

LabVIEW+FPGA虚拟仪器平台:RS-232软硬协同测控系统设计

虚拟仪器是现代电子测量的核心范式,其本质是将传统台式仪器的功能通过软件定义与硬件加速协同实现。LabVIEW提供图形化人机交互与协议封装能力,FPGA则承担纳秒级时序控制、并行数据处理和实时信号生成等硬实时任务,二者通过RS-232等确定性串行协议构建低开销、高可靠通信链路。这种软硬协同架构显著降低教学实验门槛,支持本科生在无高端采集卡条件下亲手搭建可调试、可扩展的测控闭环。关键技术涵盖DDS波形合成、门控频率测量、串口帧解析与容错传输,广泛适用于高校电子类实验平台重构、FPGA工程实践教学及嵌入式测控系统

weixin_42509507的博客 172

LabVIEW实现任意信号发生器的设计与应用

LabVIEW,即Laboratory Virtual Instrument Engineering Workbench,是一种由美国国家仪器(National Instruments,简称NI)开发的图形化编程语言。其核心是利用图形编码代替传统文本编码,采用数据流编程范式,特别适合于数据采集、仪器控制以及工业自动化等领域。LabVIEW提供丰富的库和工具包,可以方便地与各类硬件设备进行交互,因此在工程师和科研人员中广泛使用。信号发生器是电子测试设备中用于产生电信号的仪器。

weixin_42509507的博客 1418

基于LabVIEW的信号发生器系统深度剖析

深入解析基于LabVIEW开发的信号发生器系统,涵盖工作原理、模块化设计与实际应用,突出信号发生器在测试测量中的灵活性与高精度表现。

weixin_35826166的博客 753

基于FPGA的图像预处理系统(图)

 北京机械工业学院 韩娟娟 邓文怡 娄小平 由于获取图像的工具或手段的影响,使获取图像无法完全体现原始图像的全部信息。因此,对图像进行预处理就显得非常重要。预处理的目的是改善图像数据,抑制不需要的变形或者增强某些对于后续处理来说比较重要的图像特征。通常根据预处理目的的不同,把预处理技术归为图像增强技术和图像分割技术两类。图像对比度处理是空间域图像增强的一种方法。由于图像灰度范围狭窄会使

lyzhangxianglove的专栏 1777
上一篇: 基于FPGA的直流电机调速系统设计
下一篇: 基于FPGA的频率检测与LCD显示
Yoki Yao
博客等级 码龄7年 459粉丝 32原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值