【示波器】基于FPGA的数字示波器设计实现

1.软件版本

quartusii

2.本算法理论知识

框图结构:

1.缓存里包含有触发控制和触发存储器;

2.由设计指标需要1GsPs的采样率,最后的数据流要降到到250MbPs;

3.从指标来看从波形的数据采集到最后的显示时间要在10s;

4.LED的选择要能和波形映射模块相对应;

5.整个设计主要就包含两个部分,FPGA的波形协处理器这几以及最后的LED显示;

6.二维显示效果,非三维;

步骤一:数据采集模块 

首先将外部输入的1G的数据通过思路FIFO缓存,变为每路250M数据,即一路高速数据转换为多路低速数据,从而使其能够在FPGA中进行工作。这个时候需要将系统的时钟倍频到250M。

   那么,这里在QII中设计如下的结构:

步骤二:示波器显示模块 

       波形映射模块就是将经过抽点后的波形数据映射到波形映射库中,映射库中的每个存储单元都是对应LCD显示器上的一个点,于是将需要显示的点的波形数据转换成幅度,幅度在LCD上标示为垂直方向的值,所以抽点后的每一个显示点都对应LCD上的一个像素点。横坐标代表时伺信息,纵坐标代表幅值信息。这样就可以将多次采样得到的波形数据映射到同一个映射库中,相当于将多次采集的波形重叠起来显示在一起,体现了高捕获率的作用,显示效果也达到了高刷新率的要求。

3.部分核心代码

module display(
					clk,
					cs,
					datain,
					RDADDR,
					x_out,
					y_out,
					da_wrx,
					da_wry
					);
input clk;
input cs;
input [7:0] datain;
output reg [9:0] RDADDR;
output [7:0] x_out;
output [7:0] y_out;
output reg da_wrx,da_wry;

reg link_xout,link_yout;
reg [12:0] counttemp;
reg [2:0] bittemp;
reg [7:0] xbuf;
reg [7:0] ybuf;

parameter 	GET			=	10'b0_000_000_001,
			COMPARE1	=	10'b0_000_000_010,
			COMPARE2	=	10'b0_000_000_100,	
			COMPARE3	=	10'b0_000_001_000,	
			COMPARE4	=	10'b0_000_010_000,	
			COMPARE5	=	10'b0_000_100_000,
			COMPARE6	=	10'b0_001_000_000,
			COMPARE7	=	10'b0_010_000_000,
			COMPARE8	=	10'b0_100_000_000,
			NEWCOUNT	=	10'b1_000_000_000;

reg [9:0] state;

assign x_out=link_xout?xbuf:8'bz;
assign y_out=link_yout?ybuf:8'bz;

always @(posedge clk)
begin
if (cs)
	begin
	state<=GET;
	link_xout<=0;
	link_yout<=0;
	counttemp<=0;
	bittemp<=0;
	da_wrx<=1;
	da_wry<=1;
	end
else
	begin
	link_xout<=1;
	link_yout<=1;	
	case (state)
	default:	begin							//GET
				RDADDR<=counttemp[12:3];
				bittemp<=7-counttemp[2:0];
				state<=COMPARE1;
				da_wrx<=1;
				da_wry<=1;
				end
	COMPARE1:	begin
				da_wrx<=0;
				da_wry<=0;
				if (datain[bittemp])
					begin
					xbuf<={counttemp[6:0],1'b0};
					ybuf<={counttemp[12:7],1'b0};
					state<=COMPARE2;
					end
				else
					begin
					xbuf<=0;
					ybuf<=0;
					state<=NEWCOUNT;
					end
				end	
	COMPARE2:	begin
				da_wrx<=1;
				da_wry<=1;				
				state<=COMPARE3;
				end

	COMPARE3:	begin
				state<=COMPARE4;
				end

	COMPARE4:	begin
				state<=COMPARE5;
				end
									
	COMPARE5:	begin
				state<=NEWCOUNT;
				end							
	NEWCOUNT:	begin
				state<=GET;
				if (counttemp==8191) 
					counttemp<=0;
				else 	
					counttemp<=counttemp+13'b1;								
				end			
	endcase
	end
end

endmodule						

4.操作步骤与仿真结论

    系统的仿真结果如下所示:

仿真波形含义为:

分别为系统时钟,以及250M的时钟,用于读取外部输入的AD数据。

Rst为系统的复位信号,0的时候系统正常工作。

下面四个就是思路进入FPGA的采集得到的信号。这四个信号将通过四个FIFO。

四个为FIFO的输出数据,最后面一个是送入双口RAM之前的数据,将思路数据合并为一路数据。

写入RAM的地址信号。

分别为示波器波形存储的读取地址信号,x,y就是从存储在外部的存储区的坐标位置,通过对不同坐标点的位置的读取,达到显示波形的效果。

5.参考文献

[1]初华, 万强, 曹海源,等. 基于DSP和FPGA的数字示波器设计[J]. 自动化仪表, 2013, 34(3):4.A35-12

### 基于FPGA数字示波器实现 #### 设计概述 基于FPGA数字示波器是一种利用现场可编程门阵列(FPGA)来完成信号采集、处理和显示的功能模块。其核心优势在于能够提供高速数据采样能力以及灵活的逻辑控制功能[^1]。 #### 主要组成部分 数字示波器通常由以下几个部分组成: 1. **前端模拟电路** 这一环节负责接收输入信号并将其转换为适合后续数字化处理的形式。常见的组件包括放大器、滤波器等,用于调整信号幅度范围和去除噪声干扰。 2. **模数转换器 (ADC)** ADC 是整个系统中的关键部件之一,它将连续变化的电压值转化为离散数值表示形式以便进一步分析处理。选择合适的分辨率与采样率对于确保测量准确性至关重要。 3. **FPGA 处理单元** FPGA 被用来执行各种实时运算操作,比如触发检测、存储管理及时钟同步等功能。由于具备高度灵活性及强大的并行计算性能,因此非常适合应用于此类场景下。 4. **用户界面交互** 提供图形化展示窗口让用户可以直观观察到所测得的数据曲线;同时也支持参数设置选项使得使用者可以根据实际需求自定义配置文件。 #### 实现步骤概览 以下是构建这样一个系统的几个重要方面: - **硬件平台搭建** 需要准备相应的开发板卡及相关外围设备连接线路图说明文档等内容作为参考资料进行组装调试工作。 - **软件环境配置** 安装厂商提供的IDE集成开发环境以及其他必要的第三方库函数资源包以辅助编写程序代码脚本等工作流程顺利完成。 - **具体编码实践** 下面给出了一段简单的Verilog HDL伪代码片段演示如何初始化某些寄存器变量初始状态值的例子: ```verilog module scope_init ( input wire clk, // Clock signal output reg [7:0] data // Data register ); always @(posedge clk) begin data <= 8'b0; // Initialize to zero on every clock cycle end endmodule ``` #### 总结 综上所述,采用FPGA技术制作一款属于自己的便携式电子测试仪器不仅可行而且非常有意义。不仅可以锻炼动手能力和理论知识水平,还可能带来意想不到的技术突破成果展现个人价值所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值