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

news2024/11/18 16:50:33

 

目录

逻辑分析仪的应用

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

主控电路设计

分频器设计

顶层电路设计


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

逻辑分析仪的应用

测试方式:(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.coloradmin.cn/o/2242922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于python Django的boss直聘数据采集与分析预测系统,爬虫可以在线采集,实时动态显示爬取数据,预测基于技能匹配的预测模型

本系统是基于Python Django框架构建的“Boss直聘”数据采集与分析预测系统,旨在通过技能匹配的方式对招聘信息进行分析与预测,帮助求职者根据自身技能找到最合适的职位,同时为招聘方提供更精准的候选人推荐。系统的核心预测模型基于职位需求技…

kubesphere环境-本地Harbor仓库+k8s集群(单master 多master)+Prometheus监控平台部署

前言:半月前在公司生产环境上离线部署了k8s集群Victoria Metrics(二开版)自研版夜莺 监控平台的搭建,下面我租用3台华为云服务器演示部署kubesphere环境-本地Harbor仓库k8s集群(单master节点 & 单master节点)Prometheus监控部…

车载诊断框架 --- UDS小白入门篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧…

强大的正则表达式——Easy

进入题目界面输入难度1后,让我们输入正则表达式(regex): 目前不清楚题目要求,先去下载附件查看情况: import re import random# pip install libscrc import libscrcallowed_chars "0123456789()|*&q…

字节青训-小C的外卖超时判断、小C的排列询问

目录 一、小C的外卖超时判断 问题描述 测试样例 解题思路: 问题理解 数据结构选择 算法步骤 最终代码: 运行结果: 二、小C的排列询问 问题描述 测试样例 最终代码: 运行结果: ​编辑 一、小C的外卖超时判断…

游戏引擎学习第13天

视频参考:https://www.bilibili.com/video/BV1QQUaYMEEz/ 改代码的地方尽量一张图说清楚吧,懒得浪费时间 game.h #pragma once #include <cmath> #include <cstdint> #include <malloc.h>#define internal static // 用于定义内翻译单元内部函数 #…

C++11(五)----lambda表达式

文章目录 lambda表达式 lambda表达式 lambda表达式可以看作一个匿名函数 语法 [capture-list] (parameters) mutable -> return-type { statement } auto func1 [](int a, int b) mutable -> int {return a b; }; *capture-list&#xff1a;捕捉列表。编译器根据[]来 判…

CSS基础知识05(弹性盒子、布局详解,动画,3D转换,calc)

目录 0、弹性盒子、布局 0.1.弹性盒子的基本概念 0.2.弹性盒子的主轴和交叉轴 0.3.弹性盒子的属性 flex-direction row row-reverse column column-reverse flex-wrap nowrap wrap wrap-reverse flex-dirction和flex-wrap的组合简写模式 justify-content flex-s…

【Qt聊天室】客户端实现总结

目录 1. 项目概述 2. 功能实现 2.1 主窗口设计 2.2 功能性窗口 2.3 主界面功能实现 2.4 聊天界面功能实现 2.5 个人信息功能开发 2.6 用户信息界面设置功能 2.7 单聊与群聊 2.8 登录窗口 2.9 消息功能 3. 核心设计逻辑 3.1 核心类 3.2 前后端交互与DataCenter 4…

RK3568平台开发系列讲解(高级字符设备篇)IO 模型引入实验

🚀返回专栏总目录 文章目录 一、IO 的概念二、IO 执行过程三、IO 模型的分类阻塞 IO非阻塞 IOIO 多路复用信号驱动异步 IO沉淀、分享、成长,让自己和他人都能有所收获!😄 一、IO 的概念 IO 是英文 Input 和 Output 的首字母, 代表了输入和输出, 当然这样的描述有一点点…

简单实现QT对象的[json]序列化与反序列化

简单实现QT对象的[json]序列化与反序列化 简介应用场景qt元对象系统思路实现使用方式题外话 简介 众所周知json作为一种轻量级的数据交换格式&#xff0c;在开发中被广泛应用。因此如何方便的将对象数据转为json格式和从json格式中加载数据到对象中就变得尤为重要。 在python类…

【qt】控件2

1.frameGeometry和Geometry区别 frameGeometry是开始从红圈开始算&#xff0c;Geometry从黑圈算 程序证明&#xff1a;使用一个按键&#xff0c;当按键按下,qdebug打印各自左上角的坐标&#xff08;相当于屏幕左上角&#xff09;&#xff0c;以及窗口大小 Widget::Widget(QWid…

LeetCode654.最大二叉树

LeetCode刷题记录 文章目录 &#x1f4dc;题目描述&#x1f4a1;解题思路⌨C代码 &#x1f4dc;题目描述 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。 递归地在最大值 左边 的 子…

华为欧拉系统使用U盘制作引导安装华为欧拉操作系统

今天记录一下通过U盘来安装华为欧拉操作系统 华为欧拉操作系统是国产的一个类似于Centos的Linus系统 具体实现操作步骤&#xff1a; 先在官网下载欧拉系统镜像点击跳转到下载 准备好一个大于16g的U盘 &#xff0c;用于制作U盘启动 下载一个引导程序制作工具&#xff0c;我使用…

软考教材重点内容 信息安全工程师 第 3 章 密码学基本理论

&#xff08;本章相对老版本极大的简化&#xff0c;所有与算法相关的计算全部删除&#xff0c;因此考试需要了解各个常 用算法的基本参数以及考试中可能存在的古典密码算法的计算&#xff0c;典型的例子是 2021 和 2022 年分别考了 DES 算法中的 S 盒计算&#xff0c;RSA 中的已…

如何让手机ip变成动态

在数字化浪潮中&#xff0c;手机已成为我们日常生活中不可或缺的一部分。无论是浏览网页、使用社交媒体还是进行在线购物&#xff0c;手机都扮演着举足轻重的角色。然而&#xff0c;在享受网络带来的便利时&#xff0c;我们也需要关注网络安全和隐私保护。静态IP地址可能让手机…

64位程序调用32位dll解决方案

最近在做64位代码移植&#xff0c;发现很多老代码使用到了第三方的32位dll;而且这些第三方32位dll库已经年代久远&#xff0c;原开发商已不再了&#xff1b;所以急切的需要在64位主程序 中使用老的32位dll;查询很多解决方案 发现目前只有使用com 进程外组件的方法可以解决此问题…

无人机挂载超细干粉灭火装置技术详解

无人机挂载超细干粉灭火装置技术是一种创新的灭火方式&#xff0c;结合了无人机的远程操控能力和超细干粉灭火剂的高效灭火性能。以下是对该技术的详细解析&#xff1a; 一、技术背景与原理 背景&#xff1a;高层建筑灭火救援困难一直是公认的世界性难题。无人机技术的发展为…

信号-3-信号处理

main 信号捕捉的操作 sigaction struct sigaction OS不允许信号处理方法进行嵌套&#xff1a;某一个信号正在被处理时&#xff0c;OS会自动block改信号&#xff0c;之后会自动恢复 同理&#xff0c;sigaction.sa_mask 为捕捉指定信号后临时屏蔽的表 pending什么时候清零&…

Linux的指令(三)

1.grep指令 功能&#xff1a; 在文件中搜索字符串&#xff0c;将找到的行打印出来 -i&#xff1a;忽略大小写的不同&#xff0c;所以大小写视为一样 -n&#xff1a;顺便输出行号 -v:反向选择&#xff0c;就是显示出没有你输入要搜索内容的内容 代码示例&#xff1a; roo…