当前位置: 首页 > article >正文

FPGA开发-逻辑分析仪的应用-数字频率计的设计

 

目录

逻辑分析仪的应用

数字频率计的设计 -基于原理图方法

主控电路设计

分频器设计

顶层电路设计


 数字系统开发不但需要进行仿真分析,更重要的是需要进行实际测试。  

逻辑分析仪的应用

测试方式:(1)传统的测试方式;  (2)应用Quartus Prime中的Signal Tap Logic Analyzer进行在线(on-line)测试。

   Signal Tap Logic Analyzer是内嵌于Quartus Prime开发环境中的逻辑分析仪。设计者可以将Signal Tap Logic Analyzer随同设计电路一起进行编译并配置到FPGA芯片中,Signal Tap Logic Analyzer能够在硬件电路工作期间实时捕获电路内部节点处的信号或总线上的信息流,然后通过JTAG接口将采集到的数据反馈给Quartus Prime以显示电路内部的信号波形或者信息流。

   应用Signal Tap Logic Analyzer的优点无需外接逻辑分析设备,设计者只需要通过USB Blaster连接到需要测试的目标器件上,就可以通过Quartus Prime对FPGA内部硬件电路的信息进行采集和显示,而且不影响硬件电路的正常工作。

   为了测试4选一数据选择器,首先需要提供4路激励数据d0、d1、d2、d3,然后在两位地址a的作用下对4选一数据选择器的输出进行采样,以分析系统功能是否满足设计要求。

  step1.建立测试工程   在4选一数据选择器工程目录下,新建工程MUX4to1_tst,然后定制锁相环宏功能模块(设模块名为pll_for_MUX4to1_tst),设置锁相环的5路输出信号c0、c1、c2、c3和c4依次为4M、3M、2M、1M和100MHz方波,分别作为4选一数据选择器的4路输入数据d0、d1、d2、d3和Signal Tap Logic Analyzer的时钟。

step2.新建逻辑分析仪文件     在Quartus Prime主界面下,选择File菜单下的New命令打开新建文件对话页,选中Verification/Debugging Files栏下的Signal Tap Logic Analyzer File文件类型点击OK按钮确认,将弹出下图所示的逻辑分析仪文件窗口。

  单击例化管理区窗口中的auto_signaltap_0,将默认的逻辑分析仪名auto_signaltap_0修改为signaltap_MUX4to1。更改之后,信号列表区、层次显示区和数据日志中的名称也随之调整,如图所示。

step3.添加需要观测的信号     在节点列表区的空白处双击鼠标将弹出查找节点(Node Finder)对话页。选择Filter栏下的Design Entry(all names),点击List列出工程所有的端口信号,如左图所示。

    节点列表中的Data Enable和Trigger Enable复选框用于启用或者禁用已加入到节点列表中相关信号的使用。如果禁用Data Enable,启动Signal Tap Logic Analyzer时将不会采集相应的信号。如果禁用Trigger Enable,则相应的信号不用作触发条件定义。利用这些选项有助于减少逻辑分析仪所占用的资源。

step4.配置采样参数    需要观测的信号添加完成后,还需要指定Signal Tap Logic Analyzer的采样时钟和设置采样深度。对于复杂的应用,还需要触发流控制、触发位置设置和触发条件等相关信息。

 (1) 指定采样时钟。   在信号配置区,点击clock栏右侧的浏览按钮,用Node Finder查找到锁相环PLL_for_MUX4to1_tst的c4输出端,添加到clock栏中。

(2) 设置采样深度。   在Data栏的Sample Depth中选择采样深度,如图所示。

  当选择采样深度为2k(2000个采样点),在时钟频率为100MHz(周期为10ns)的情况下,每次采样时长为2000×10ns=20µs。因此,4路输入数据d0、d1、d2、d3为4M、3M、2M和1MHz的情况下,每次分别采样80、60、40和20个数据周期,能够满足分析要求。

step5.保存逻辑分析仪文件    保存逻辑分析仪文件,并修改默认的文件名stp1.stp为MUX4to1_tst.stp,单击“保存”,将弹出“是否保存”提示页。若选择“Yes”则表示同意再次编译时将Signal Tap Logic Analyzer文件集成于工程中一起编辑、综合和适配,以便将逻辑分析仪随同硬件电路一起配置到FPGA芯片中。

step6.重新编译和下载   点击Signal Tap Logic Analyzer主界面上的  按钮启动Quartus Prime对工程重新进行编译、综合与适配过程。将逻辑分析仪编译进工程中。编译完成后,需要将配置文件MUX4to1_tst.sof下载到FPGA中。

    点击JTAG链配置区中的  按钮,在工程目录中的output_files子目录下选中新生成的配置文件MUX4to1_tst.sof,再点击   按钮进行下载。下载完成后可以看到例化管理器Instance Manager右侧提示为Ready to acquire,表示可以进行逻辑分析了。

step7.启动逻辑分析仪进行在线测试   设置开关SW1和SW0均为低电平(a=00),点击例化管理器中的  按钮(或者选择Processing菜单下的Run Analysis命令/快捷键F5)启动Signal Tap Logic Analyzer进行单次数据采集,可以看到输出y的波形与数据d0的波形一致。

   另外,还可以点击例化管理器中的  按钮(或者选择Processing菜单下的autorun Analysis命令/快捷键F6)启动Signal Tap Logic Analyzer进行连续数据采集。点击按钮   (或者选择Processing菜单下的Stop Analysis命令/快捷键ESC)停止采集。

   测试完成后,需要从工程中移除Signal Tap Logic Analyzer时,选择Quartus Prime主界面中Assignments菜单下的Settings...命令,在弹出页面中选择Signal Tap Logic Analyzer设置界面中去掉Enable Signal Tap Logic Analyzer复选框前的“√”,重新进行编译与综合后即可移除。

数字频率计的设计 -基于原理图方法

设计方案: 基于直接测频法,能够连续测量信号频率的频率计总体设计方案如图所示,其中fX为被测信号。主控电路输出的CLR'为清零信号,用于将计数器清零,CNTEN为闸门信号,用于控制计数器在固定时间内对CLK进行计数,DISPEN为显示刷新信号,用于控制锁存译码电路刷新测量结果。

  设计过程:数字频率计主要由主控电路、计数和锁存与译码电路和分频器三部分构成。

主控电路设计

   用十进制计数器74160作为主控器件、取时钟脉冲为8Hz时,测频计数器的清零信号CLR'、门控信号CNTEN、显示刷新信号DISPEN与主控计数器的输出Q3Q2Q1Q0之间的时序关系设计如右表所示。

分频器设计

    为了简化分频电路设计,先定制Cyclone IV E FPGA内部的锁相环ALTPLL将50MHz的晶振信号分频为10kHz,然后再应用分频系数为(10×103/8=)1250的分频器将频率降为8Hz。

顶层电路设计

  顶层电路是基于直接测频设计方案,应用已经封装好的分频电路,主控电路,计数、锁存与译码显示电路,以及定制好的锁相环搭建而成。

#freqor_sch.tcl
#freqor pin setting
set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED"
set_global_assignment  -name ENABLE_INIT_DONE_OUTPUT OFF
set_location_assignment PIN_AG14 -to FX1_100MHz
set_location_assignment PIN_Y2 -to OSC50MHz
set_location_assignment PIN_AA14 -to D7_Gn
set_location_assignment PIN_AG18 -to D7_Fn
set_location_assignment PIN_AF17 -to D7_En
set_location_assignment PIN_AH17 -to D7_Dn
set_location_assignment PIN_AG17 -to D7_Cn
set_location_assignment PIN_AE17 -to D7_Bn
set_location_assignment PIN_AD17 -to D7_An
......

   将计数、锁存与显示译码电路扩展为8组(能够测量1Hz~100MHz信号的频率)时,频率计顶层工程的综合与适配结果。从图中可以看出,频率计共占用了733个逻辑单元(logic elements)、458个寄存器(registers)和512位片内存储资源(memory bits)和1个锁相环(PLL)。


http://www.kler.cn/a/399068.html

相关文章:

  • 深挖C++赋值
  • Ubuntu22.04 安装mysql8 无法修改端口及配置的问题 坑啊~~~~
  • ssm129办公用品管理系统开发与设计+jsp(论文+源码)_kaic
  • 层归一化和批归一化
  • 树的直径计算:算法详解与实现
  • 计算机网络在线测试-概述
  • 关于做完 C# 项目的问题总结
  • STM32设计智能翻译手势识别加算法系统
  • 基于OpenCV的自制Python访客识别程序
  • Java基础-内部类与异常处理
  • Intern大模型训练营(八):Llamaindex RAG 实践
  • python核心语法
  • 树莓派(Raspberry Pi)picotool
  • RHCSA学习超详细知识点2命令篇
  • 开源vs闭源:你更看好哪一方?
  • 徒步中补给问题——贪心算法
  • 畜牧定位器
  • Linux 硬链接和软链接的使用场景有哪些?
  • [C/C++] 定位新表达式 placement new
  • Android 中的 Zygote 和 Copy-on-Write 机制详解
  • React 中如何解析字符串中的 html 结构
  • SpringBoot整合FreeMarker生成word表格文件
  • [Admin] Dashboard Filter for Mix Report Types
  • 27.<Spring博客系统③(实现用户退出登录接口+发布博客+删除/编辑博客)>
  • 使用OpenCV(C++)通过鼠标点击操作获取图像的像素坐标和像素值
  • 利用TinyML和IoT技术预测沙漠地区光伏电站清洁方法