差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
pocketinstrument [2020/08/07 09:47]
gongyu
pocketinstrument [2020/08/22 21:26] (当前版本)
gongyu [4 参考代码]
行 1: 行 1:
-### 基于小脚丫FPGA的口袋仪器+## 基于小脚丫FPGA的口袋仪器
  
-###主要功能及特性 +### 主要功能及特性 
-  * 一路DDS任意波形发生器 +  * 一路[[DDS]]任意波形发生器 
-    * 12位R-2R DAC +    * 12位R-2R ​[[DAC]] 
-    * DAC转换率为200Msps,输出最高5MHz模拟信号+    * [[DAC]]转换率为200Msps,输出最高5MHz模拟信号
     * 频率调节精度1Hz     * 频率调节精度1Hz
     * 输出幅度5Vpp     * 输出幅度5Vpp
行 11: 行 11:
     * 调节范围为0 ~ +/-4V     * 调节范围为0 ~ +/-4V
   * 双路ADC数据采集   * 双路ADC数据采集
-    * 8位ADC+    * 8位[[ADC]]
     * 采样率45Msps     * 采样率45Msps
     * 输入模拟信号范围20Vpp     * 输入模拟信号范围20Vpp
   * 波形和信息显示   * 波形和信息显示
-    * 240*240分辨率LCD+    * 240*240分辨率[[LCD]]
 {{drawio>​pocketinstru:​stepinstrument}} {{drawio>​pocketinstru:​stepinstrument}}
  
-###相关设计文档 +### 相关设计文档 
-  * MAX19713 ​双路ADC +  * {{:​stepinstrument.pdf|Step口袋仪器板原理图 - PDF格式}} 
-  * SGM8301 轨到轨高速运算放大器+  * BOM文件 
 +  * KiCad设计文件 - ZIP格式 
 +  * Gerber文件 - ZIP格式 
 + 
 +### 3 核心器件技术资料及数据手册 
 +  * MAX1193-双路45Msps、8位高速[[ADC]] 
 +  * SGM8301轨到轨高速运算放大器
   * SGM8601高速运算放大器   * SGM8601高速运算放大器
   * TS3A5017模拟开关   * TS3A5017模拟开关
 +  * LMV358 双路运算放大器
 +  * TL974 4路轨到轨运算放大器
 +  * CH340 [[USB]]转[[UART]]变换器
   * LM2776电荷泵变换器   * LM2776电荷泵变换器
-  * MIC5504-3.3 LDO +  * MIC5504-3.3 ​[[LDO]] 
-  * 240*240 LCD模块+  * 1.54寸、分辨率为240*240的RGB[[LCD]]模块 
 + 
 +### 4 参考代码 
 +  * [[dds_verilog|DDS任意波形发生器/​可调直流电压发生器]] 
 +  * [[scope_verilog|与示波器相关的FPGA Verilog逻辑设计]] 
 +  * [[ADCSampling|ADC采样]] 
 +  * [[LCD240*240Disp|240*240分辨率RGB LCD的控制]] 
 + 
 +数据ADC读出、LCD写入的状态控制 
 + 
 +<code verilog>​ 
 +// -------------------------------------------------------------------- 
 +// >>>>>>>>>>>>>>>>>>>>>>>>>​ COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<​ 
 +// -------------------------------------------------------------------- 
 +// Module: Arbiter 
 +//  
 +// Author: Step 
 +//  
 +// Description:​ Control sample and display in different time 
 +//  
 +// Web: www.stepfpga.com 
 +// 
 +// -------------------------------------------------------------------- 
 +// Code Revision History : 
 +// -------------------------------------------------------------------- 
 +// Version: |Mod. Date:   ​|Changes Made: 
 +// V1.1     ​|2016/​10/​30 ​  ​|Initial ver 
 +// -------------------------------------------------------------------- 
 +module Arbiter ( 
 + input clk_in,​ // system clock 
 + input rst_n_in,​ //system reset, active low 
 + 
 + input sample_done,​ 
 + input display_done,​ 
 + 
 + output reg sample_en,​ 
 + output reg display_en 
 +); 
 +  
 +localparam IDLE = 2'​d0;​ 
 +localparam SAMPLE = 2'​d1;​ 
 +localparam DISPLAY = 2'​d2;​ 
 + 
 +reg [1:0] state; 
 +always@(posedge clk_in or negedge rst_n_in) begin 
 + if(!rst_n_in) begin 
 + state <= IDLE; 
 + sample_en <= 1'​b0;​ 
 + display_en <= 1'​b0;​ 
 + end else begin 
 + case(state) 
 + IDLE:​begin 
 + sample_en <= 1'​b0;​ 
 + display_en <= 1'​b0;​ 
 + state <= SAMPLE; 
 + end 
 + SAMPLE:​begin 
 + if(sample_done) begin  
 + sample_en <= 1'​b0;​ 
 + display_en <= 1'​b1; ​  
 + state <= DISPLAY;  
 + end else begin 
 + sample_en <= 1'​b1;​ 
 + display_en <= 1'​b0;​ 
 + end 
 + end 
 + DISPLAY:​begin 
 + if(display_done) begin  
 + sample_en <= 1'​b1;​ 
 + display_en <= 1'​b0; ​  
 + state <= SAMPLE;  
 + end else begin 
 + sample_en <= 1'​b0;​ 
 + display_en <= 1'​b1;​ 
 + end 
 + end 
 + default:​state <= IDLE; 
 + endcase 
 + end 
 +end 
 +  
 +endmodule 
 + 
 +</​code>​