差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
pocketinstrument [2020/08/07 09:45] gongyu |
pocketinstrument [2020/08/22 21:26] (当前版本) gongyu [4 参考代码] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | ### 基于小脚丫FPGA的口袋仪器 | + | ## 基于小脚丫FPGA的口袋仪器 |
- | #### 主要功能及特性 | + | ### 1 主要功能及特性 |
- | {{drawio> }} | + | * 一路[[DDS]]任意波形发生器 |
- | * 一路DDS任意波形发生器 | + | * 12位R-2R [[DAC]] |
- | * 12位R-2R DAC | + | * [[DAC]]转换率为200Msps,输出最高5MHz模拟信号 |
- | * DAC转换率为200Msps,输出最高5MHz模拟信号 | + | |
* 频率调节精度1Hz | * 频率调节精度1Hz | ||
* 输出幅度5Vpp | * 输出幅度5Vpp | ||
行 12: | 行 11: | ||
* 调节范围为0 ~ +/-4V | * 调节范围为0 ~ +/-4V | ||
* 双路ADC数据采集 | * 双路ADC数据采集 | ||
- | * 8位ADC | + | * 8位[[ADC]] |
* 采样率45Msps | * 采样率45Msps | ||
* 输入模拟信号范围20Vpp | * 输入模拟信号范围20Vpp | ||
* 波形和信息显示 | * 波形和信息显示 | ||
- | * 240*240分辨率LCD | + | * 240*240分辨率[[LCD]] |
+ | {{drawio>pocketinstru:stepinstrument}} | ||
- | #### 相关设计文档 | + | ### 2 相关设计文档 |
- | * 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> |