ARM +FPGA GPIB IP核实现

news2024/11/20 11:26:34
目前在数据发生其技术上居领先的是美国的 Tektronix 公司和 Agilent
公司。
Agilent 公司的台式脉冲 / 数据发生器家族的最高时钟频率达 3GHz (定
时发生器),数据发生器 E81200 在通道数为 8CH 时数据速率为 660Mb/s,
即可以产生最高达 330MHz 的波形输出。
Tektronix 公司典型的台式数据发生器 Tek DG2020A, 时钟频率为
200MHz, 可以产生 100MHz 的图形数据输出,具有功能强大的波形编辑软
件。数据图形可由数据图形编辑器获得,编辑器包括了图形编辑器、定时
波形序列组合编辑器、表格编辑等波形编辑能力。国内一些高等院校和科
研单位正致力于研制数据发生器,有的可做到 100M 可编程数字信号,但
由于产品设计与生产工艺的不足,目前还未能形成数据发生器产品。
本文将围绕高速数据发生器的 GPIB 接口设计而展开,拟用专用芯片
NAT9914 FPGA 两种方案实现 GPIB 通讯接口硬件部分,加上相应的接口软
件驱动程序,从而能容易的把该仪器与其它设备集成实现系统的自动测试。
2.1 高速数据发生器的主要工作原理
高速数据发生器由硬件和软件组成,以下是整机硬件与软件的总体方
案及主要工作原理。
整个硬件系统以内嵌计算机为中心进行功能定义和模块划分,主要由
内嵌计算机、时钟单元、触发单元、模式数据产生单元、输出单元、面板
控制及显示、通信接口等组成。如图 2-1
时钟单元采用 DDS+PLL 实现,它是整个高速数据发生器工作的基础,
其主要作用是产生频率连续可调的内时钟信号;模式数据产生单元包括模
式数据控制电路、模式数据存储器和地址数据存储器三个组成部分,其中,
模式数据控制电路是整个单元电路的核心,它控制数据的多路同时输出以
及序列数据的按序切换,采用专用 ASIC 电路设计,数据存储器采用高速
SRAM ;触发单元用于输出同步时钟对外时钟进行变换; BNC 输出电路包
括模拟电路部分(即电平信息处理)、数字电路部分(即频率信息处理)、
末级驱动部分(信息合成输出)等三个组成部分;通信接口电路包括网口、
串口、 GPIB 等接口,其中网口和串口是内嵌计算机自带, GPIB 接口采用
FPGA 或专用芯片实现。

3.2.5 设计芯片的选择
本设计采用 ALTERA 公司的 FPGA 芯片 ACEX1K30QC208 来实现。
1K30 芯片属 ALTERA 公司的 ACEX 系列,该系列是 ALTERA 公司着眼于
通信、音频处理及类似场合应用而推出的 FPGA 器件系列芯片,它采用
0 .22/0.18 微米混合工艺,密度从从 1 万门到 10 万门。它依然采用了
ALTERA 传统的 LUT( 查找表 ) 结合 EAB( 嵌入式阵列块 ) 结构,芯片包含一
个嵌入式阵列,可实现存储器和专用的逻辑功能,可实现单双端口 RAM
模式;一个 IOE 包含一个双向的 I/O 缓冲器和一个寄存器, IOE 可以配置
位为输入、输出、或双向管脚。
ACEX1K30QC208 的最大系统门数为 3 万门,它有 1728 个逻辑宏单
元数和 6 个嵌入式系统块,最大可提供 24567RAM 位,引脚数为 208 个,
除去一些配置引脚和电源引脚,实际可用的引脚数为 141 个,因而可完全
满足设计的要求。 [8]
一旦电路设计固定,将其电路设计写入配置存储片 EPROM 中,每次
上电后写入 FPGA 中,实现设计的电路功能。
3.3 系统的具体设计实现
3.3.1 总体框架

为了具有一定的通用性,高速数据发生器的 GPIB 接口设计主要参考
NAT9914 芯片的内部结构,内部结构如图 3-1 所示。我们把整个待设
计系统划分为若干基本功能模块单元进行设计,在基本单元实现方法上采
用语言描述方式完成,这不仅方便将来跨开发环境的移植,而且在功能调
试以及对局部修改都带来很大的方便。
我们可以把整个系统划分为几个子系统。其中包括和微处理器 ISA
口的控制逻辑,与 GPIB 母线通信的接口功能,数据通道部分。对每个子
系统的设计也可以采用向下分解为模块级设计,这样在调试和组件系统
时,不仅具有很强的灵活性,而且方便代码的调试以及利于代码的重利用。
ISA 接口的控制逻辑,将会在第四章详细的介绍,由于我们所选的
FPGA 芯片 ACEX1K30QC208 的逻辑宏单元数够大,所以可以将这部分下
载到 FPGA 芯片中,而不需要再用一片 EPM3128ATC100-10 。这部分由于
后面阐述很详细,这里就不再赘述。
接口功能的设计是设计的核心,既是设计的重点又是难点。它不仅需
要对 IEEE488 协议有深刻的认识,而且,在接口功能子集的选择上也有一
定的要求。
数据通道部分有寄存器堆和组合功能电路,数据通道内部寄存器由 13
个寄存器组成,根据需要选择其中的 11 个,其中包括只读寄存器和只写
寄存器。它们是完成微处理器端到 GPIB 接口功能端的数据桥梁。该子系
统的设计亦是重点。
在完成基本模块以后,可以对每个模块生成图形化的符号( Symbol ),
在组建整个系统的时候可以用类似画电路图的方法直接对这些符号进行
调用,设计相对直观而且对整个系统级架构的把握相对全面。在完成整个
内部电路的“软件”设计以后就是具体的把该“软件核”( CORE )固化到
具体选定的 FPGA 上,通常利用 JTAG 端口下载。
3.3.2 接口功能状态机实现
按照高速数据发生器要求,设计时选取了八种接口功能:源方挂钩 、
受方挂钩、讲者、听者、服务请求、远控本控、器件清除、器件触发。把
各接口功能划分为若干相关状态,这样在用 Verilog HDL 实现这些相互作
用影响的状态跃迁的时候就可以引入状态机设计。
一、状态机简介
[12]
状态机( FSM )从不同的角度有不同的分类方法。
从状态变迁的确定性来说,可分为确定型有限状态机和非确定型有限
状态机。从状态变迁的触发条件来说,可分为同步状态机和异步状态机,
同步状态机的触发条件限定为某预定时刻和信号 ( 如系统时钟信号 clock)
输入信号的改变并不能立即产生相应的状态改变,异步状态机在任何时候
一旦输入信号改变的情况下都将发生状态变迁、产生相应输出。从状态机
的复杂程度来说,有单状态机 (single FSM) 和通信状态机之分,通信状态
机又可以分为主从通信状态机和并发通信状态机。单状态机从输入输出函
数关系来说,可以分为 Mealy 型和 Moore 型有限状态机,他们代表着最具
普遍意义上的有限状态机划分。
Mealy 状态机和 Moore 状态机
1 Mealy 状态机
Mealy 状态机的输出不仅仅是当前状态的函数,而且还是当前输入的
函数。图 3-2 Mealy 状态机的模型
2 Moore 状态机
Moore 状态机输出仅仅是当前状态的函数,与当前输入 X(t) 无关,所
Moore 状态机是 Mealy 状态机的一种特例。图 3-3 moore 状态机的模
型。
一般来说 Mealy 型状态机的状态变量较少,状态变量少意味着采用较
少状态存储单元,在实际的工程应用中多数采用 Mealy 状态机。Moo re
状态机易于代数分析,在 FSM 的代数理论中大都采用 Moore 型状态机作
为研究对象。
二、 接口功能的选取
IEEE488-1975 标准中规定了十种接口功能,每种接口功能按照特
殊的规约来行事。我们根据仪器的具体要求,选定八种接口功能,如表 3-1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1094757.html

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

相关文章

22python生命周期的一种案例

第一个问题,什么叫生命周期? 生命周期就是一个对象从产生到消亡的一个周期过程,总体来说是一个这样的 展示一下生命周期的一点点的小案例吧~ 1、利用全局变量 #以下是一个python展示生命周期的方法过程 personCount 0 class Person:def _…

月薪过二万的Java面试

文章目录 📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。🌎跑过十五…

创新YOLOv5改进:结合全新可变形大核注意力(D-LKA Attention)实现多尺度目标涨点

🔥🔥🔥 提升多尺度目标检测,创新提升 🔥🔥🔥 🔥🔥🔥 捕捉图像特征和处理复杂图像特征 🔥🔥🔥 👉👉👉: 本专栏包含大量的新设计的创新想法,包含详细的代码和说明,具备有效的创新组合,可以有效应用到改进创新当中 👉👉👉: 🐤🐤�…

Java并发面试题:(一)线程的5种状态及转换

线程的状态转换 1、新建状态(New):新创建了一个线程对象。 2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位 于可运行线程池中,变得可运…

设计模式(1)-设计模式前置基础知识

1,设计模式概述 1.1 软件设计模式的产生背景 "设计模式"最初并不是出现在软件设计中,而是被用于建筑领域的设计中。 1977年美国著名建筑大师、加利福尼亚大学伯克利分校环境结构中心主任克里斯托夫亚历山大(Christopher Alexand…

三大方法快速发现商业规律

文章目录 三大方法快速发现商业规律一、市场调研二、数据分析三、案例分析 📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查…

新时代高效记账:自动化智能如何进行财务管理

随着科技的不断发展,自动化智能已经逐渐渗透到我们生活的各个领域。在财务管理中,自动化智能的应用显得尤为重要。它不仅可以提高财务管理的效率和精度,还能帮助我们更好地规划和掌控公司的财务状况 晨曦记账本提供了多种高效财务管理工具。…

【linux kernel】对linux内核设备的注册机制和查找机制分析

文章目录 1、简介2、device_initialize分析3、device_add分析4、总结 🔺【linux内核系列文章】 👉对一些文章内容进行了勘误,本系列文章长期不定时更新,希望能分享出优质的文章! 1、《linux内核数据结构分析之哈希表》…

冲刺十五届蓝桥杯P0006平面切分

文章目录 题目思路代码总结 题目 平面切分 思路 这道题是一个思维题把,之前没有接触过平面几何的知识,做起来感觉还是比较难的,用到的set集合和自己创建一个类 首先我们知道,一根直线A是可以将平面切分成两块的,如…

如何能优化网站开展速度

随着互联网技术的飞速发展,网站加载速度已经成为一个不可忽视的关键要素。 当您的网站速度缓慢,不仅会影响用户的访问体验,还可能导致用户的流失。以下是一些创新的技巧和策略,帮助您提升网站打开速度。 一、在图像压缩上做文章 …

ArcGIS JS API 演示Demo

ArcGIS JS API Demo演示地址 https://ralucanicola.github.io/JSAPI_demos/ ArcGIS JS API Demo下载地址 https://github.com/RalucaNicola/JSAPI_demos

PyTorch入门教学——使用PyCharm创建一个PyTorch项目

首先需要创建好PyTorch的虚拟环境,步骤:PyTorch入门教学——简介与环境配置-CSDN博客打开PyCharm,新建项目,选择项目的存放位置。选择先前配置的解释器,也就是虚拟环境中的解释器。(记住创建的虚拟环境所在…

1、资源包下载

1 、百度云盘永久下载地址 : 链接: https://pan.baidu.com/s/13pBco75qXU6bLxlTtZ29TQ 提取码: ixkg 2 、官方下载地址: https://dev.mysql.com/downloads/mysql/ 3 、注意:下载时候要选择自己的系统和对应的电脑 CPU 位数&a…

Multisim14 逻辑分析仪的使用教程(打开关闭+详细具体)

一、打开逻辑分析仪 总结:根据自身的分析需要选择分析的参数,保存并允许结果。然后根据参数的设置,看运行结果是否满足项目分析需要。 二、 关闭逻辑分析仪 最后,再次运行即可关闭逻辑分析仪了! 总结:如果…

LLM 系列 | 21 : Code Llama实战(上篇) : 模型简介与评测

引言 小伙伴们好,我是《小窗幽记机器学习》的小编:卖热干面的小女孩。 个人CSDN首页:JasonLiu1919_面向对象的程序设计,深度学习,C-CSDN博客 今天开始以2篇小作文介绍代码大语言模型Code Llama。上篇主要介绍Code Llama的基本情况并基于Hug…

Linux系统编程_文件编程第2天:写整数、结构体,fopen等

1. 文件编程小应用之修改程序的配置文件&#xff08;407.10&#xff09; FILE/demo14.c #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <unistd.h> #include <string.h> #include <s…

VSCode 调试 u-boot

文章目录 VSCode 调试 u-boot调试配置启动 u-boot 脚本调试界面重定向之后继续调试参考 VSCode 调试 u-boot 调试配置 参考 qemu基础篇——VSCode 配置 GDB 调试 要想调试 u-boot 只需要再添加一个 u-boot 的配置即可 {"version": "0.2.0","conf…

Python 机器学习入门之K近邻算法

系列文章目录 第一章 Python 机器学习入门之线性回归 第一章 Python 机器学习入门之梯度下降法 第一章 Python 机器学习入门之牛顿法 第二章 Python 机器学习入门之逻辑回归 番外 Python 机器学习入门之K近邻算法 K近邻算法 系列文章目录前言一、K近邻算法简介1、定义2、用途 …

【Unity引擎核心-Object,序列化,资产管理,内存管理】

文章目录 整体介绍Native & Managed Objects什么是序列化序列化用来做什么Editor和运行时序列化的区别脚本序列化针对序列化的使用建议 Unity资产管理导入Asset Process为何要做引擎资源文件导入Main-Assets和 Sub-Assets资产的导入管线Hook&#xff0c;AssetPostprocessor…

对协议的基本认识

目录 前言 TCP网络计算器的模拟实现 制定协议 协议protocol的整体代码 TCP网络计算器的服务端类TcpServer TcpServer类的整体代码 TCP网络计算器的服务端 服务端CalServer.cc的整体代码 TCP网络计算器的客户端 客户端CalClient.cc的整体代码 对模拟实现的TCP网络计算…