差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
pocketinstrument [2020/08/07 11:47]
gongyu
pocketinstrument [2020/08/22 21:26] (当前版本)
gongyu [4 参考代码]
行 1: 行 1:
-### 基于小脚丫FPGA的口袋仪器+## 基于小脚丫FPGA的口袋仪器
  
-#### 1 主要功能及特性+### 1 主要功能及特性
   * 一路[[DDS]]任意波形发生器   * 一路[[DDS]]任意波形发生器
     * 12位R-2R [[DAC]]     * 12位R-2R [[DAC]]
行 18: 行 18:
 {{drawio>​pocketinstru:​stepinstrument}} {{drawio>​pocketinstru:​stepinstrument}}
  
-#### 2 相关设计文档+### 2 相关设计文档
   * {{:​stepinstrument.pdf|Step口袋仪器板原理图 - PDF格式}}   * {{:​stepinstrument.pdf|Step口袋仪器板原理图 - PDF格式}}
   * BOM文件   * BOM文件
行 24: 行 24:
   * Gerber文件 - ZIP格式   * Gerber文件 - ZIP格式
  
-#### 3 核心器件技术资料及数据手册 +### 3 核心器件技术资料及数据手册 
-  * MAX1193-双路45Msps、8位高速ADC+  * MAX1193-双路45Msps、8位高速[[ADC]]
   * SGM8301轨到轨高速运算放大器   * SGM8301轨到轨高速运算放大器
   * SGM8601高速运算放大器   * SGM8601高速运算放大器
行 31: 行 31:
   * LMV358 双路运算放大器   * LMV358 双路运算放大器
   * TL974 4路轨到轨运算放大器   * TL974 4路轨到轨运算放大器
-  * CH340 USB转UART变换器+  * 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>​