整个工程中,一共编译了这么些.v文件,相对应的bdf很复杂,但是RTL视图很清晰

配置参数: fpga的fifo用了4096 乘 2个,分别用作sdram的输入和输出,sdram=16M

ccd的工作点,通过几个参数定义出来
parameter PRE_SH = 1;
parameter ON_SH = PRE_SH + 6;        // SH*400ns=2400ns,1000ns,1500ns
parameter AFTER_SH = ON_SH + 1;
parameter PRE_LIGHT_SHILD = AFTER_SH + 12;
parameter LIGHT_SHILD = PRE_LIGHT_SHILD + 16;
parameter AFTER_LIGHT_SHILD = LIGHT_SHILD + 3;
parameter SIGNAL_OUT = AFTER_LIGHT_SHILD + 2048;
parameter AFTER_SIGNAL = SIGNAL_OUT + 7;
parameter TEST_SIGNAL = AFTER_SIGNAL + 1;
    
    
ccd的初始化时间,利用1ms和状态机进行切换    
assign idl2s1_start  = state_c==IDLE && end_cnt_1ms;
assign s12s2_start = state_c==S1 && end_cnt_1ms;
assign s22s3_start  = state_c==S2 && end_cnt_1ms;
assign s32s4_start  = state_c==S3 && end_cnt_1ms;
assign s42s5_start  = state_c==S4 && end_cnt_1ms;
    
ccd在一个周期中使用的电平,是通过分小块满足并且满足大条件才触发,这样就对应了在一个周期上的电平变换
assign ccd_cp_en =    (cnt_cell >= TIME_CELL/4   && cnt_cell < TIME_CELL/2 - 1 ) && (cnt_sample < PRE_SH || cnt_sample >= ON_SH) && flag_sample == 1;
assign adc_cds_clk1 = (cnt_cell >= TIME_CELL/4   && cnt_cell < TIME_CELL*3/8) && (cnt_sample >= ON_SH) && flag_sample == 1;
assign adc_cds_clk2 = (cnt_cell >= TIME_CELL*6/8 && cnt_cell < TIME_CELL*7/8) && (cnt_sample >= ON_SH) && flag_sample == 1;
assign adc_clk =      (cnt_cell >= TIME_CELL*7/8 || cnt_cell < TIME_CELL*2/8) && (cnt_sample > ON_SH) && flag_sample == 1;

基准时钟1微秒
//1us产生的信号
always @(posedge clk_100M or negedge rst_n)
begin
    if(!rst_n)
    begin
        cnt_1us <= 0;
    end
    else if(add_cnt_1us)
    begin
        if(end_cnt_1us)
            cnt_1us <= 0;
        else
            cnt_1us <= cnt_1us + 1;
    end
end
assign add_cnt_1us = end_cnt_300ms;
assign end_cnt_1us = add_cnt_1us && cnt_1us == 100 - 1;

sdram部分:
可读条件,68013有空并且sdram中有数据
if(in_usb_en == 1 && fifo_have_data ==1)
                can_read_sdram <= 1;
可写条件,ccd产生一个新数据给的信号

总结:其实最难的不是每一个部分,而是联调费时间,各种小问题,关键是没有好的调试手段

(五)CCD传感器1000帧fpga-68013-usb2.0传输:verilog程序部分quartus编译相关推荐

  1. (二)CCD传感器1000帧(可调)采集,fpga主控,sdram存储 68013usb2.0传输到上位机保存显示:fpga逻辑程序

    fpga这部分是花了大部分时间调试的,总结出来:比较难调试,调试方式单一 概述 fpga控制ccd传感器和ad转换芯片,从而获得ccd上所有阵列的电压数据,之后将数据存储在sdram中,然后控制680 ...

  2. (一)CCD传感器1000帧(可调)采集,fpga主控,sdram存储 68013usb2.0传输到上位机保存显示:项目介绍

    这是一个关于ccd图像采集到上位机的项目,从设计pcb到开发上位机,开发了很久.期间遇到了各种大大小小的坑,特此记录一下. 功能说明: 自己设置的帧率,通过上位机下发到fpga中,fpga控制ccd采 ...

  3. (四)CCD传感器1000帧fpga-68013-usb2.0传输:实际测试数据

    测试数据部分 1产生数据: 由于fpga采用的是verilog硬件语言,只要ccd那里时序没问题,数据一定是可靠的. 当然了,如果硬件上有干扰另当别论,在实际测试时候,由于供电的纹波以及高频振荡,偶尔 ...

  4. (六)CCD传感器1000帧fpga-68013-usb2.0传输:上位机MFC的c++部分

    我是在cypress例程上改的,具体加入了下发数据和解析上传的数据 图中圈出来的地方是对应的显示操作的地方 以下是按了start后,就这样下发AAAA的数据后跟着frame_number这个从界面输入 ...

  5. 基于FPGA的USB2.0数据传输(通过本文可以自己设计USB2.0模块)

    文章部分内容参考了相关论坛中的内容: 对文章中内容感兴趣或者有不懂的可以咨询QQ:2859340499 B站对应讲解本文视频链接 首先来说一下USB这个大家都知道的东西吧: USB通用串行总线,是应用 ...

  6. (完结项目)fpga采集双路CCD摄像头1000帧图像上传到上位机显示

    基于FPGA飓风4代的线阵CCD实时图像采集系统 系统采用线阵CCD TCD2252D作为图像传感器,使用CCD专用信号处理芯片AD9822(14bit)处理CCD传输过来的信号数据,将数据存在SDR ...

  7. altera fpga 型号说明_基于FPGA的USB2.0接口通信

    欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 概述 本文主要介绍一种基于FPGA的FT232H接口通信开发方案.传统的USB通信开发对工程人员 ...

  8. 基于FPGA实现USB2.0接口方案设计

    1 USB2.0简介 USB2.0因其数据传输速率快和接口的多样化而广泛使用.USB 2.0 已经广泛使用于个人电脑中.USB2.0优势如下: 1)速度快,在高速块传输,最大数据字段的模式下,最高可以 ...

  9. FPGA和usb2.0 CY7C68013通信实现bulkloop

    步骤 具体的FPGA代码 具体的usb固件程序和驱动 首先安装usb2.0芯片的电脑驱动,CySuiteUSB_3_4_7_B204.exe: win10下禁用系统签名,设置-更新和安全-恢复-高级启 ...

最新文章

  1. R语言ggplot2可视化交互作用图(Interaction Plot):可视化不同分组(分类变量1)在不同剂量下(分类变量2)的箱图(box plot)、均值计算并连接成线图(line plot)
  2. 题目1255:骰子点数概率(动态规划)
  3. Java SE中的Bootstrap CDI 2.0
  4. 密码学专题 非对称加密算法指令概述 DSA算法指令
  5. 多进程模块multiprocessing
  6. JNI的方式调用DLL(SO)(上)
  7. to_string作用
  8. 学习资料参考:从深度学习到自然语言处理
  9. ASE光源 ASE噪声
  10. 笨方法学python豆瓣_资料 | 笨办法学Python
  11. 为项目配置了Bean,结果Spring Boot并没有扫描到
  12. DWM 层 -- 访客 UV 计算
  13. Windows时间同步出错|无法获取服务器时间解决办法
  14. c语言编译bss和data,.bss段和.data段的区别
  15. OEM、ODM与OBM的区别
  16. vue中好用的视频插件推荐,video+canvas实现视频截图第一帧,ffmpeg实现视频截图第一帧
  17. opencv倾斜校正 java,OpenCV实现基于傅里叶变换的旋转文本校正
  18. 无人机实时流怎么开_直播解决方案,如何利用无人机进行直播
  19. 机器人系统常用仿真软件介绍和效果
  20. 计算几何与图形学有关的几种常用算法

热门文章

  1. idea 设置自动换行
  2. 海外工程项目施工安全管理,如何管?
  3. CPM-main 部署实践 AI生成小说3
  4. HDU 2500.做一个正气的杭电人
  5. 免费虎年限定红包封面,送你最后一个bug~
  6. 计算机保研英语面试问题,计算机保研面试英文自我介绍
  7. 小型防雨箱式柴油发电机
  8. 正则表达式及常见用法介绍
  9. Android Studio升级后 出现在No subject alternative DNS name matching services.gradle.org found.
  10. 基于第一行代码CoolWeather的小白天气开发