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.rhkb.cn/news/473674.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET 9.0 中 System.Text.Json 的全面使用指南

以下是一些 System.Text.Json 在 .NET 9.0 中的使用方式,包括序列化、反序列化、配置选项等,并附上输出结果。 基本序列化和反序列化 using System; using System.Text.Json; public class Program {public class Person{public string Name { get; se…

Linux 命令 | 每日一学,文本处理三剑客之awk命令实践

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 0x00 前言简述 描述:前面作者已经介绍了文本处理三剑客中的 grep 与 sed 文本处理工具,今天将介绍其最后一个且非常强大的 awk 文本处理输出工具,它可以非常方便…

【第五课】Rust所有权系统(一)

目录 前言 所有权机制的核心 再谈变量绑定 主人变更-所有权转移 总结 前言 这节课我们来介绍下rust中最重要的一个点:所有权系统。这是网上经常说rust无gc的秘密所在。在开始之前,我们来想想JVM系语言,在做垃圾回收的过程,1.…

三周精通FastAPI:42 手动运行服务器 - Uvicorn Gunicorn with Uvicorn

官方文档:Server Workers - Gunicorn with Uvicorn - FastAPI 使用 fastapi 运行命令 可以直接使用fastapi run命令来启动FastAPI应用: fastapi run main.py如创建openapi.py文件: from fastapi import FastAPIapp FastAPI(openapi_url&…

任意文件下载漏洞

1.漏洞简介 任意文件下载漏洞是指攻击者能够通过操控请求参数,下载服务器上未经授权的文件。 攻击者可以利用该漏洞访问敏感文件,如配置文件、日志文件等,甚至可以下载包含恶意代码的文件。 这里再导入一个基础: 你要在网站下…

编写一个生成凯撒密码的程序

plain list(input("请输入需要加密的明文(只支持英文字母):"))key int(input("请输入移动的位数:"))base_A ord(A)base_a ord(a)cipher []for each in plain:if each :cipher.append( )else:if each.i…

RDIFramework.NET CS敏捷开发框架 V6.1发布(.NET6+、Framework双引擎、全网唯一)

RDIFramework.NET C/S敏捷开发框架V6.1版本迎来重大更新与调整,全面重新设计业务逻辑代码,代码量减少一半以上,开发更加高效。全系统引入全新字体图标,整个界面焕然一新。底层引入最易上手的ORM框架SqlSugar,让开发更加…

华为USG5500防火墙配置NAT

实验要求: 1.按照拓扑图部署网络环境,使用USG5500防火墙,将防火墙接口加入相应的区域,添加区域访问规则使内网trust区域可以访问DMZ区域的web服务器和untrust区域的web服务器。 2.在防火墙上配置easy-ip,使trust区域…

Java基础-I/O流

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 字节流 定义 说明 InputStream与OutputStream示意图 说明 InputStream的常用方法 说明 OutputStrea…

RabbitMQ的工作队列在Spring Boot中实现(详解常⽤的⼯作模式)

上文着重介绍RabbitMQ 七种工作模式介绍RabbitMQ 七种工作模式介绍_rabbitmq 工作模式-CSDN博客 本篇讲解如何在Spring环境下进⾏RabbitMQ的开发.(只演⽰部分常⽤的⼯作模式) 目录 引⼊依赖 一.工作队列模式 二.Publish/Subscribe(发布订阅模式) …

<项目代码>YOLOv8 番茄识别<目标检测>

YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…

Python数据分析NumPy和pandas(三十五、时间序列数据基础)

时间序列数据是许多不同领域的结构化数据的重要形式,例如金融、经济、生态学、神经科学和物理学。在许多时间点重复记录的任何内容都会形成一个时间序列。许多时间序列是固定频率的,也就是说,数据点根据某些规则定期出现,例如每 1…

【C++滑动窗口】1248. 统计「优美子数组」|1623

本文涉及的基础知识点 C算法:滑动窗口及双指针总结 LeetCode1248. 统计「优美子数组」 给你一个整数数组 nums 和一个整数 k。如果某个连续子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。 请返回这个数组中 「优美子数组」 的数…

【不写for循环】玩玩行列

利用numpy的并行操作可以比纯用Python的list快很多,不仅如此,代码往往精简得多。 So, 这篇来讲讲进阶的广播和花哨索引操作,少写几个for循环()。 目录 一个二维的例题 一个三维的例题 解法一 解法二 更难的三维例题…

《Java核心技术 卷I》用户界面中首选项API

首选项API 在桌面程序中,通常都会存储用户首选项,如用户最后处理的文件、窗口的最后位置等。 利用Properties类可以很容易的加载和保存程序的配置信息,但有以下缺点: 有些操作系统没有主目录概念,很难为匹配文件找到…

3步实现贪吃蛇

方法很简单,打开页面,复制,粘贴 一.整体思维架构 我们根据游戏的开始,运行,结束,将整个游戏划分成三个部分。在每个部分下面又划分出多个功能,接下来我们就根据模块一一实现功能。 二.Gamesta…

STL序列式容器之list

相较于vector的连续性空间&#xff0c;list相对比较复杂&#xff1b;list内部使用了双向环形链表的方式对数据进行存储&#xff1b;list在增加元素时&#xff0c;采用了精准的方式分配一片空间对数据及附加指针等信息进行存储&#xff1b; list节点定义如下 template<clas…

【论文模型复现】深度学习、地质流体识别、交叉学科融合?什么情况,让我们来看看

文献&#xff1a;蓝茜茜,张逸伦,康志宏.基于深度学习的复杂储层流体性质测井识别——以车排子油田某井区为例[J].科学技术与工程,2020,20(29):11923-11930. 本文目录 一、前言二、文献阅读-基于深度学习的复杂储层流体性质测井识别2.1 摘要2.2 当前研究不足2.3 本文创新2.4 论文…

(一)- DRM架构

一&#xff0c;DRM简介 linux内核中包含两类图形显示设备驱动框架&#xff1a; FB设备&#xff1a;Framebuffer图形显示框架; DRM&#xff1a;直接渲染管理器&#xff08;Direct Rendering Manager&#xff09;&#xff0c;是linux目前主流的图形显示框架&#xff1b; 1&am…

Java基础-Java中的常用类(上)

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 String类 创建字符串 字符串长度 连接字符串 创建格式化字符串 String 方法 System类 常用方法 方…