差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
scope_verilog [2021/02/22 13:04]
gongyusu [[[instru_protocol|仪器传输协议]]]
scope_verilog [2021/10/24 20:45] (当前版本)
gongyusu
行 34: 行 34:
  
 向FIFO中写数据 向FIFO中写数据
 +
 为向FIFO中写数据,我们需要等待到空的状态,一旦FIFO的状态变“满”,则停止写数据,代码逻辑如下: 为向FIFO中写数据,我们需要等待到空的状态,一旦FIFO的状态变“满”,则停止写数据,代码逻辑如下:
  
行 49: 行 50:
  
 从FIFO中读取数据 从FIFO中读取数据
 +
 只要FIFO不空,就可以从中读取数据,读出的每一个字节发送到串行输出模块 只要FIFO不空,就可以从中读取数据,读出的每一个字节发送到串行输出模块
  
行 100: 行 102:
 #### 1.2 基于双口RAM的机制 #### 1.2 基于双口RAM的机制
 先说一下“触发” 先说一下“触发”
 +
 现在,每次从串行端口接收到字符时,示波器都会被触发。 当然,这仍然不是一个非常有用的设计,但是稍后我们将对其进行改进。 现在,每次从串行端口接收到字符时,示波器都会被触发。 当然,这仍然不是一个非常有用的设计,但是稍后我们将对其进行改进。
  
行 130: 行 133:
  
 我们使用2个触发器形式的同步器(将“ startAcquisition”转移到另一个时钟域)。 我们使用2个触发器形式的同步器(将“ startAcquisition”转移到另一个时钟域)。
 +
 <code verilog> <code verilog>
 reg startAcquisition1;​ always @(posedge cll_adc) startAcquisition1 <= startAcquisition;​ reg startAcquisition1;​ always @(posedge cll_adc) startAcquisition1 <= startAcquisition;​
行 136: 行 140:
  
 最后,一旦另一个时钟域“看到”信号,它就会“回复”(使用另一个同步器“正在获取”)。 最后,一旦另一个时钟域“看到”信号,它就会“回复”(使用另一个同步器“正在获取”)。
- 
  
 <code verilog> <code verilog>
行 155: 行 158:
  
 #### 双口RAM #### 双口RAM
 +
 既然触发器可用,我们需要一个双端口RAM来存储数据,注意RAM的每一侧如何使用不同的时钟。 既然触发器可用,我们需要一个双端口RAM来存储数据,注意RAM的每一侧如何使用不同的时钟。
 +
 <code verilog> <code verilog>
 ram512 ram_adc( ram512 ram_adc(
行 164: 行 169:
  
 使用二进制计数器可以轻松创建ram地址总线。 使用二进制计数器可以轻松创建ram地址总线。
 +
 首先写地址: 首先写地址:
 <code verilog> <code verilog>
行 273: 行 279:
  
 #### 1.3 触发 #### 1.3 触发
 +
 我们的第一个触发机制非常简单 - 检测一个上升沿穿过一个设定好的阈值,我们使用的是8位的ADC,因此采集到的数据的范围为0x00到0xFF,我们先假设阈值为ox80. 我们的第一个触发机制非常简单 - 检测一个上升沿穿过一个设定好的阈值,我们使用的是8位的ADC,因此采集到的数据的范围为0x00到0xFF,我们先假设阈值为ox80.
  
行 288: 行 295:
  
 **显示中间触发** **显示中间触发**
 +
 数字示波器的一项重要功能是能够查看在触发之前发生了什么。 数字示波器的一项重要功能是能够查看在触发之前发生了什么。
  
 这是如何实现的? 这是如何实现的?
 +
 示波器不断采集,示波器的存储器一遍又一遍地被覆盖-当到达终点时,我们从头开始。 但是,如果发生触发,则示波器将继续获取其一半以上的存储深度,然后停止。 因此,它保留了一半的内存与触发之前发生的事件,以及一半的触发之后发生的事件。 示波器不断采集,示波器的存储器一遍又一遍地被覆盖-当到达终点时,我们从头开始。 但是,如果发生触发,则示波器将继续获取其一半以上的存储深度,然后停止。 因此,它保留了一半的内存与触发之前发生的事件,以及一半的触发之后发生的事件。
  
行 408: 行 417:
  
 我们还添加了一个4位寄存器(HDiv[3:0])以控制水平采集速率。 当我们想降低采集速率时,要么丢弃来自ADC的采样,要么以我们感兴趣的频率对它们进行滤波/​降采样。 我们还添加了一个4位寄存器(HDiv[3:0])以控制水平采集速率。 当我们想降低采集速率时,要么丢弃来自ADC的采样,要么以我们感兴趣的频率对它们进行滤波/​降采样。
- 
- 
  
 ### 2. LCD的波形和界面显示 ### 2. LCD的波形和界面显示