十路逻辑分析仪设计b

Tags
Logic Analyzer Development
State Machine Modeling
Hardware Architecture Design
Last edited by
AI summary
设计了一种十路逻辑分析仪,具有实时信号采集、支持高频信号和独立电路设计的优点,但成本较高。逻辑分析仪通过PS2键盘进行人机交互,采样率为80MHz,支持单次和连续采样。设计包括信号采集电路、波形显示和VGA接口驱动,确保模块间功能独立。通过特定规则将采集数据转换为波形图像,并实现键盘按键功能分析以控制电路状态。
Last edited time
Nov 5, 2024 01:59 PM

第一节:认识逻辑分析仪

逻辑分析仪就是用来抓取数字电路电路中的信号,对抓取的信号进行逻辑分析电路,从应用设计角度可将逻辑分析分为以下2种:
嵌入式逻辑分析:就是将逻辑分析仪电路嵌入到数字电路设计电路中的一种方式
优点:
  1. 实时抓取数字电路中任何信号
  1. 当我们设计电路的时候,前期需要调试电路,作为调试电路的一部分的。
缺点:
  1. 一般用于观测低频信号
  1. 占用设计电路的设计资源
由于FPGA的高度灵活性,很适合将逻辑分析嵌入到其中,作为调试电路使用,因此各大厂商都会提供相关的IP核以及分析软件
在实际使用的时候我们只需要产生参数配置文件,不需要在源程序中例化IP核,就可以使用逻辑分析仪的IP核。
非嵌入式逻辑分析仪:逻辑分析仪电路和数字电路设计电路分离,各自独立。
优点:
  1. 实时采集信号,并且一定程度上可以采集高频信号
  1. 一般可以在电路设计的任何阶段使用
  1. 不占用设计资源
缺点:
  1. 严格上来说只能采集引脚的信号
  1. 造价高

1.1 逻辑分析仪的工作原理

逻辑分析仪主要用来采集信号,分析信号之间逻辑关系,它的工作可以用一下图表示:
notion image
N:逻辑分析仪通道数,例如N=10就是十路逻辑分析仪
DEPTH:采样深度,即采样点数,理论上采样点数越多,所能分析的波形范围越广
notion image

1.2 基于ZX-1开发板的逻辑分析仪设计

1.2.1 需求分析

由于我们无法编写配套的上位机软件,人机交互我们使用PS2键盘,不采用JTGA上传采样数据,直接通过VGA显示波形。
设计需求:
采样率:规定原始参考采样率为时钟80mhz采样时钟,采样支持抽取
通道数:规定N=10
采样点数:规定1024个点
人机交互:使用PS2键盘
采样控制:支持单次采样,连续采样
触发:支持单通道触发,不支持多通道触发,原6种触发方式
notion image
波形分析:使用vga直接显示波形,规定分别分辨率为640*480

1.2.2 架构设计

硬件设计一般采用自定向下设计,先设计架构,从架构层层往下设计,架构指的是顶层电路的设计。
notion image

第二节:程序设计与实现

设计采用自定向下设计,逐个模块往下设计,各个模块之间保持功能独立性

2.1 信号采集电路设计与实现

功能:在人机交互的控制下,采集各个通道的数字信号的数据,将采集到的所有数据存入存储器
notion image

2.1.1 端口信号说明

信号名
描述
系统相关
clk_s
采样参考时钟,默认80mhz
rst_n
系统复位
采样通道输入
ch[9:0]
采样通道,默认10路
双端口ran写相关
wr_clk
双端口ram写时钟
wr_en
双端口ram写使能
wraddr[9:0]
双端口ram写地址
wrdata[9:0]
双端口ram写数据
人机交互相关
run
当run==1表示开始信号采集
msel[2:0]
触发方式选择msel[2:0]触发方式图形示意0无条件触发 1低电平 2下降沿 3上升沿 4高电平 5双沿 
chsel[3:0]
0:0通道 1:1通道 …
en_sap
当en_sap==1抽取数据

2.2 波形显示

功能:将采集到的待分析的信号的数据通过vga接口直接显示到现实设备上,默认采集数据1024点,vga分辨率640*480.
分析:根据目前电路功能要求,我们不难看出整个可以划分为2个子电路(包含2个独立的功能),分别是vga接口驱动,波形构图。
Vga接口 :驱动vga接口,模拟vga的时序和协议
波形构图:由于待观测的信号的采集到的是数据,数据本身并非可以直接显示为波形,所以我们需要通过设计转化为图像,然后显示在显示设备上。
按照自定向下设计方法,按功能划分,保持模块独立性等原则,我们将该电路模块相下划分2个子模块。
notion image

2.2.1 构图程序设计

功能:将采集到的待分析的信号的数据按照一定的规则形成图像
notion image
  1. 端口描述
    1. 信号名
      描述
      系统相关
      clk_v
      像素时钟
      rst_n
      系统复位,低电平有效
      双端口ram读有关信号
      rd_clk
      双端口ram读时钟
      rdaddr[9:0]
      双端口ram读地址
      rddata[9:0]
      双端口ram读数据
      显示平面有相
      x_cdt[9:0]
      显示平面水平坐标 [0:639]
      y_cdt[8:0]
      显示平面垂直坐标 [0:479]
      color[7:0]
      显示平面像素点的颜色 理论上最多显示256色
      人机交互控制
      mark[9:0]
      时间刻线水平移动坐标
      scop[8:0]
      波形水平移动坐标
  1. 如何构图?
    1. 构图就是按照一定的规则把采集的数据转换为波形图像,这个规则完全自己定义,也可以参考其它,比如modelsim波形显示,….
      本设计参考modelsim波形显示,按照它的规则构图,显示效果如下:
      notion image
      水平:显示波形
      垂直:将不同的波形分割
      显示平面垂直480行,可以选择一部分显示波形,另外一部分当做空白区域,也可以全部显示,假如全部显示,每路波形占用480/10=48行,为了避免各路信号之间粘连,我们需要对每路信号进行分割,假如全部显示,并且每路上下预留8行分割带,显示区域只有32行,具体显示范围如下:
      ch[9:0]
      显示范围
      ch[9:0]
      显示范围
      ch[0]
      ((48*0)  + 8)   :  ((48*1)  - 9)
      ch[5]
      ((48*5)  + 8)   :  ((48*6)  - 9)
      ch[1]
      ((48*1)  + 8)   :  ((48*2)  - 9)
      ch[6]
      ((48*6)  + 8)   :  ((48*7)  - 9)
      ch[2]
      ((48*2)  + 8)   :  ((48*3)  - 9)
      ch[7]
      ((48*7)  + 8)   :  ((48*8)  - 9)
      ch[3]
      ((48*3)  + 8)   :  ((48*4)  - 9)
      ch[8]
      ((48*8)  + 8)   :  ((48*9)  - 9)
      ch[4]
      ((48*4)  + 8)   :  ((48*5)  - 9)
      ch[9]
      ((48*9)  + 8)   :  ((48*10)  - 9)
      全屏显示通道分割表(上下预留8行分隔带)
      图层 :共4个图层
      3:时间刻线图层
      2:波形图层
      1:栅格线图层
      0:背景图层

2.2.2 vga接口驱动程序设计

notion image
  1. 端口说明
    1. 信号名
      描述
      系统相关
      clk_v
      像素时钟=总像素点个数*刷新率 60*800*525=  25.2mhz
      rst_n
      系统复位,低电平有效
      Vga接口相关
      hs
      行同步信号
      vs
      场同步信号
      red[2:0]
      红色分量
      green[2:0]
      绿色分量
      blue[1:0]
      蓝色分量
      显示平面有相
      x_cdt[9:0]
      显示平面水平坐标 [0:639]
      y_cdt[8:0]
      显示平面垂直坐标 [0:479]
      color[7:0]
      显示平面像素点的颜色 理论上最多显示256色
      notion image

2.3 人机交互

在数字电路设计中正常情况下电路上电之后自动运行,当我们需要改变运行状态的时候可以通过2种方式实现,如下:
状态机 :如果电路运行状态切换的条件是由电路本身决定,我们把这种电路设计叫做状态机。
人机交互:在正常电路运行状态的情况下,我们通过外部输入干扰因素控制改变内部电路运行状态,我们这种应用的电路设计叫做人机交互。
人机交互在数字电路设计和状态机一样是一种比较常见的电路设计,在一些应用场景会用到,一般交互方式有2种:
  1. 命令参数解析法
    1. 这种大部分用在硬件(下位机)和软件(上位机)之间实现交互,简单说就是软件控制硬件的电路运行状态,如sigtap通过上位机给下位机发送命令或者参数实现状态控制。
      这种方法咋具体电路实现的时候通过寄存器配置实现
  1. 设备交互法
    1. 一般通过中断类设备(键盘,鼠标,游戏句柄….)交互,终端类设备发送中断数据,咱们解析中断数据(数据类型由设备本身决定),从而控制电路运行状态。
      按照嵌入式逻辑分析仪的工作原理可以看出,本身需要人机交互的参与,因此我们需要设计这样的电路,基于ZX-1开发板,我们选择PS2键盘(属于中断类设备)作为我们的交互设备,采用以上第2种方式实现人机交互。

2.3.1 基本设备(PS2键盘)交互的电路设计

设计的基本思路是我们选择部分按键(我们自己选择)作为我们的功能按键,给我们选择的按键分别赋予一定的功能(需要我们自己定义功能),通过按键控制改变当前点运行状态。
  1. 选择部分按键
    1. notion image
      单次触发 :O  (one )
      连续触发 :C  (Continu)
      停止连续触发:S(Stop)
      触发方式选择 :M(mode)
      触发通道选择 :H(CH)
      抽取  :B(bleed)
      时间刻线左移:<-
      时间刻线右移:->
      波形左移    :A
      波形左移    :D
  1. 按键功能定义
    1. PS2键盘的按键采用国际通用编码,用键值表示按键
      按键
      按键值 Key[8:0] Key[8]==0:表示普通按键 Key[8]==1:表示扩展按键 Key[7:0]:按键值
      相关电路状态控制信号
      描述
      O
      8’h044
              run
      单次触发 每按一次按键采集一次数据
      C
      8’h021
      连续触发 每按一次按键连续采集数据
      S
      8’h01B
      连续触发停止 每按一次按键停止当前练习采集数据
      M
      8’h03A
      msel[2:0]
      每按一次按键改变一次触发模式
      H
      8’h033
      chsel[3:0]
      每按一次按键改变一次触发通道
      B
      8’h032
      fsel[2:0]
      默认预设8种抽取操作fsel[2:0]抽取采样率(单位HZ)080mhz140mhz220mhz310mhz45mhz51mhz6800khz7500khz
      <-
      8’h16B
      mark[9:0]
      按一次按键时间刻线水平左移K列
      ->
      8’h174
      按一次按键时间刻线水平右移K列
      A
      8’h01C
      scop[8:0]
      按一次按键波形水平左移J列
      D
      8’h023
      按一次按键波形水平右移J列scop[8:0]

2.3.2 程序设计

本设计采用PS2键盘,按照当前要求我们可以看出有3分布功能,分别是:
  1. PS2接口驱动
    1. 模拟PS2接口时序,接收PS2数据
  1. 键盘译码
    1. 因为当前使用的键盘,因此需要译码,确定按键
  1. 按键功能分析
    1. 对功能按键进行分析,从而产生相应的电路运行状态控制信号
      notion image

2.3.2.1 PS2接口驱动电路设计

2.3.2.2 键盘译码电路实现

功能:按照键盘编码规则对按键进行译码,输出按键的码值(默认9位表示)
编码规则:
通码: 按键被按下发送的码值
普通码:码值
扩展码:8’HE0  +  码值
断码  :按键被抬起发送的码值
普通码:8’HF0   +  码值
扩展码:8’HE0  +   8’HF0  +   码值
notion image
译码本质上就是输出每个按键的键值(区分扩展码和普通码),在实际应用中输出通码的键值
notion image
  1. 端口说明
    1. 信号名
      描述
      系统相关
      clk_s
      默认80mhz
      rst_n
      系统复位
      pS2接收数据
      rvdata[7:0]
      Ps2接收的数据
      flag_rvdata
      当flag_rvdata==1表示rvdata[7:0]有效
      键盘译码输出
      flag_key
      当flag_key==1表示key[8:0]有效
      key[8:0]
      键盘译码输出 Key[8]==0:表示普通码 Key[8]==1:表示扩展码 Key[7:0]:通码的键值
  1. 译码电路状态机设计
    1. notion image

2.3.2.3 按键功能分析电路实现

功能:根据我们已经功能按键产生响应的控制条件信号,从而控制电路运行状态
notion image
信号名
描述
系统相关
clk_s
默认80mhz
rst_n
系统复位
键盘译码
flag_key
当flag_key==1表示key[8:0]有效
key[8:0]
键盘译码输出 Key[8]==0:表示普通码 Key[8]==1:表示扩展码 Key[7:0]:通码的键值
人机交互控制相关
run
当run==1表示逻辑分析仪开始采集信号
msel[2:0]
逻辑分析仪采集信号触发方式选择 0:5
chsel[3:0]
逻辑分析仪采集信号触发通道选择 0:9
mark[9:0]
逻辑分析仪波形显示时间刻线水平移动坐标值 0:639
scop[8:0]
逻辑分析仪波形显示波形水平移动坐标值 0:383
Loading...