历史上的今天
今天是:2024年12月03日(星期二)
2019年12月03日 | 虚拟FPGA逻辑验证分析仪的设计
2019-12-03 来源:elecfans
虚拟FPGA逻辑验证分析仪的设计
随着FPGA技术的广泛使用,越来越需要一台能够测试验证FPGA芯片中所下载电路逻辑时序是否正确的仪器。目前,虽然Agilent、Tektronix 等大公司生产的高端逻辑分析仪能够实现FPGA电路的测试验证功能,但此类仪器价格高昂,一般要十万、数十万人民币。所以,研究开发价格适中且具有逻辑分析仪和FPGA电路的测试验证功能的仪器是非常有价值的。
本文所介绍的基于虚拟仪器技术的逻辑验证分析仪,采用FPGA技术来实现仪器硬件部分的主要设计,应用图形化编程语言LabVIEW来实现仪器的测试软件设计。文中阐述了虚拟FPGA逻辑验证分析仪的总体设计方案及其工作原理,并对仪器的两个主要工作环节的开发设计作了具体介绍。虚拟FPGA逻辑验证分析仪除了具有FPGA电路的基本测试验证功能,还具有逻辑分析仪和产生激励信号的功能。它是微机系统及数字电路设计、侦错、软件开发和仿真的理想仪器。
虚拟FPGA逻辑验证分析仪的设计
1 虚拟FPGA逻辑验证分析仪的总体设计
虚拟FPGA逻辑验证分析仪是把计算机作为数据的显示控制,显示器和鼠标、键盘作为仪器的用户面板,其组成框图如图1所示。

图1 虚拟FPGA逻辑验证分析仪组成框图
本仪器的基本工作原理是:由计算机编辑输入电路的仿真激励信号给所设计的被测电路,同时进行采集和存储,再传送回计算机,最后进行电路的逻辑时序分析等,从而实现仪器的FPGA电路的基本测试验证功能以及逻辑分析仪功能和产生激励信号的功能。仪器的工作步骤如图2所示。

图2 虚拟FPGA逻辑验证分析仪工作流程图
2 虚拟FPGA逻辑验证分析仪的硬件设计
虚拟FPGA逻辑验证分析仪的硬件组成包含三个部分:
①主板,具有数据采集、数据存储、定时计数、主板与计算机进行数据通信等多种功能。由于FPGA(现场可编程门阵列)可实现无限次地反复编程,快速方便实用,具有可现场模拟调试验证等特点,所以本系统中比较复杂的控制器部分、采样部分等都采用FPGA实现;其他的由外围芯片组成。外围芯片上主要有RAM及数据缓冲和锁存等数据通道部分。
②FPGA被测电路板。
③通用的个人计算机,具有运行图形化编程软件的能力。
3 虚拟FPGA逻辑验证分析仪的软件设计
虚拟逻辑验证分析仪的软件设计采用NI公司的图形化编程语言工具LabVIEW7.0。FPGA测试验证软件是一款包含数字波形打开、编辑、保存、浏览的高性能软件,在硬件的配合下,可以完成数字波形的下载,即将编辑生成波形以数据形式加载到被测FPGA电路板的激励端口,并从输出端口取回测试数据显示,以验证用户下载到被测FPGA电路板中的可编程逻辑设计是否正确。软件的主界面如图3所示。

图3 软件主界面
介绍虚拟FPGA逻辑验证分析仪的两个工作环节
1 编辑激励信号
虚拟FPGA逻辑验证分析仪的激励信号源采用纯软件LabVIEW来实现,该激励信号源可选择以真值表方式(按位方式)或编码表(总线方式)打开、编辑或保存数字激励波形,并可选择周期数。其主要技术指标如下。
①输入方式:真值表、总线方式编辑输入;
②输出通道:13个输出激励信号数据通道;
③显示方式:
A:时序波形显示,可水平位移和水平伸缩;
B:数据显示,分为二进制、十六进制显示。
2 测量被测电路板
在虚拟FPGA逻辑验证分析仪的工作流程中,测量被测电路板这一工作即将编辑好的仿真激励信号输入给所设计的被测电路板,同时进行采集和存储所测试电路板的数据。该步骤中的采集工作主要采用FPGA来实现,存储工作用RAM来完成。通过分析论证,本设计采用ALTER公司Cyclone系列的芯片,型号为EP1C6Q144。它采用1.5V内核电压,内嵌92160位存储区间,可提供两个锁相环和双信数据传输速率(DDR)的接口电路。设计中,逻辑分析仪电路及采集电路的主要技术指标如下。
①采集时钟:外时钟和内时钟;
②内时钟频率:25kHz、50kHz、100kHz、250kHz、500kHz、1MHz、5MHz、10MHz;
③采集存储点数:1~2048;
④触发方式:时钟触发、外部触发、字触发和按键触发。
结束语
本文所介绍的虚拟FPGA逻辑验证分析仪,采用FPGA技术来实现仪器硬件部分的主要设计,应用图形化编程语言LabVIEW来实现仪器的测试软件设计。事实证明,该方案设计的虚拟FPGA逻辑验证分析仪不但具有FPGA电路的基本测试验证功能,还有逻辑分析仪和产生激励信号的功能。通过实用证明,该仪器具有功能强大、稳定性好、可扩展性强及操作方便灵活等特点,是教学、实验和科研的很好的辅助仪器。
下一篇:虚拟信号频谱分析仪的设计
史海拾趣
|
我想利用2450的GPB3口的TOUT3功能发出PWM波。 在Kernel/Oal/init.c下的OEMInit()中添加代码。下面是我的代码: volatile S3C2450_IOPORT_REG *s2450IOP = (S3C2450_IOPORT_REG *)OALPAtoVA(S3C2450_BASE_REG_PA_IOPORT, FALSE); & ...… 查看全部问答> |
|
现在需要用EEPROM保存一些参数,程序用KEIL C写的,现在就不知道参数该怎么保存,直接赋值?还是需要其他什么操作 直接赋值的话: .... int xdata canshu; ..... canshu=122; .... 但有个EECON寄存器,不知道需不需要对这个寄存器进行操作? ...… 查看全部问答> |
|
module Display(clk,data,addr,read_en,write_en,data_out,seg,lbit);input clk;input read_en,write_en;input [7:0]data;input [3:0]addr;output [7:0] seg;output [7:0] lbit;output [7:0]data_out;reg [7:0]data_in[7:0];reg [7:0]seg;reg [7:0] ...… 查看全部问答> |
|
关于S5pv210之Sate210 android4.0 kernel移植遇到的INITRD问题原因分析 在S5PV210 1GB DDR2 内存的开发板上跑android4.0 很快就跑起来了,但是换到Sate210 内存为 512MB的开发板上在启动内核后,挂载文件系统不成功,后来发现是INITRD 的问题 有打印信息 Starting kernel ... Uncompressing Linux... done, booting t ...… 查看全部问答> |




