基于Mcrosemi M2S090T FPGA 的 imx991 SWIR的SLVS解码(一)

目录

一、平台介绍

二、器件的简介

1、imx991 SWIR Image Sensor

2、M2S090T

三、工程

1、imx991寄存器配置


一、平台介绍

工程开发平台:Libero Version:20231.0.6 Release:v2023.1

文本编辑器:Sublime text3 

二、器件的简介

1、imx991 SWIR Image Sensor

  • Description :

The IMX991-AABA-C is a diagonal 4.1 mm (Type 1 / 4) CMOS active pixel type solid-state image sensor with a square pixel array and 0.33 M effective pixels. This chip features a global shutter with variable charge-integration time. This chip has a wide waveband (0.4 μm to 1.7 μm) with high sensitivity, high resolution, low dark current and low power consumption.   

  • Features 

◆ CMOS active pixel type dots 
◆ Visible + SWIR wideband sensor (0.4 μm to 1.7 μm) 
◆ Built-in timing adjustment circuit, H/V driver and serial communication circuit 
◆ Global shutter function 
◆ Input frequency 
37.125 MHz / 74.25 MHz / 54 MHz 
◆ Number of recommended recording pixels: 640 (H) × 512 (V) approx. 0.33 M pixels 
Readout mode 
All - pixel scan mode   
Vertical / Horizontal 1 / 2 Subsampling mode 
ROI mode 
Vertical / Horizontal‐Normal / Inverted readout mode 
◆ 8-bit / 10-bit / 12-bit A/D converter 
◆ Readout rate 
Maximum frame rate in 
All - pixel scan mode: 8bit : 258.80 frame/s, 10 bit: 240.61 frame/s, 12bit: 137.39 frame/s 
◆ Variable-speed shutter function (resolution 1 H units) 
◆ PGA function 
        0 dB to 18 dB: Analog Gain (0.1 dB step) 
        18.1 dB to 42 dB: Analog Gain: 18 dB + Digital Gain: 0.1 dB to 24 dB (0.1 dB step) 
◆ I/O interface 
SLVS (2 ch / 4 ch switching) output 
◆ Recommended exit pupil distance: –100 mm to –∞ 
◆ Built-in digital thermometer 
◆ Built-in thermoelectoric cooler 
 

2、M2S090T

M2S090T是Microsemi公司Smartfusion系统的带SOC的FPGA,其架构如下图所示。

        M2S090 内部包括主要分两部分,MSS和fabric,其中MSS即为一个cortext M3 ARM核和一些外围接口,fabric部分即为FPGA的逻辑部分。两部分之间可以通过AHB、APB进行通信,另外还有相互的中断信号可用。

        下面就是Cache Controller Interfaces to Cortex-M3 Processor, AHB Bus Matrix, and MDDR Bridge

三、工程

本工程配置imx991 sensor 为主模式,SLVS 4channel,8bit数据,all scan,656*545分辨率

1、imx991寄存器配置

This sensor has a total of 5376 bytes of registers, composed of registers with address 00h to FFh that correspond to Chip ID = 02h to 0Ch, 10h to 19h. Use the initial values for empty address. Some registers must be change from the initial values, so the sensor control side should be capable of setting 5376 bytes.

配置寄存有两种总线:IIC和SPI,任选其一,本工程使用IIC总线,上图为寄存器说明的一部分,IIC总线和SPI总线操作地址有所不同。SPI总线时需要先chip ID然后再address;IIC总线就直接address。

工程里定义寄存器值取一部分,如下图所示

顶层接口的定义如下图所示

以下是IIC接口的例化

//====================================================================================
//
//-----接口总线
//
// IIC or SPI;  
//
//通过宏定义文件define.v内的宏变量来控制,当前使用IIC
//

	wire [1:0] isStart;
	wire [15:0] iic_rAddr;
	wire [7:0]  iic_WrData;
	assign isStart    = (sen_reg_sta==4'h0 || sen_reg_sta==4'h2 )? ( (Start_Sig == 1)? ((r_rw==1)?2'b10 : 2'b01) : 2'b00 ) : ((Start_Sig2 == 1)? ((r_rw2==1)?2'b10 : 2'b01) : 2'b00 );
	assign iic_rAddr  = (sen_reg_sta==4'h0 || sen_reg_sta==4'h2 )? rAddr   : conf_addr ;
	assign iic_WrData = (sen_reg_sta==4'h0 || sen_reg_sta==4'h2 )? WrData  : conf_data ;

	iic_bus U_iic
	 (
	      .CLK      ( i_clk      ),
		  .RSTn     ( i_rst_n    ),
		  .Start_Sig( isStart    ),
		  .Addr_Sig ( iic_rAddr  ),
		  .WrData   ( iic_WrData ),
		  .RdData   ( RdData     ),
		  .Done_Sig ( Done_Sig   ),
	      .SCL      ( o_i2c_scl  ),
		  .SDA      ( io_i2c_sdi )
	 );


	assign o_spi_cs   = 1;

-----------------------------------------------------------------------------------------------------------------

凡有FPGA方面开发需求的朋友,欢迎发信息联系交流合作!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/326321.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我自己总结记忆的23种设计模式

1, 对23种设计模式,大家的第一个印象就是抽象繁琐,记不住!!不常用?? 其实设计模式是非常有用的,大家只要理解设计模式了,思想上就能有质的飞跃! 但是&#…

RFID服装物流零售管理系统设计解决方案

一、方案概述 本方案是广东航连科技根据服装企业客户的需求量身定制的解决方案,该方案综合了RFID技术、网络技术、计算机技术、数据库技术和无线通信技术,结合服装企业的实际需求以及航连科技的丰富经验和独特技术,提出了以下基于RFID的物流…

高级 Python 面试问题与解答

文章目录 专栏导读1.什么是PIP?2.什么是 zip 函数?3.Python 中的 __init __ () 是什么?4.Python 中的访问说明符是什么?5.Python 中的单元测试是什么?6.Python全局解释器锁(GIL)?7.P…

nginx代理七牛云http资源,节省https费用(亲测有效)

七牛云https费用太高了,通过配置服务器https代理到http访问! location ~ /qiniu/(.*) { proxy_pass http://qiniu.myweb.cn/$1; proxy_set_header Host $proxy_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarde…

Vue3+ElementPlus实例_select选择器(不连续搜索)

1.开发需求 在各大UI框架的select选择器中,在搜索时都是输入连续的搜索内容,比如“app-store”选项,你要输入“app-xxx”,才能匹配这个选择,要是想输入“a-s”这种不连续的匹配方式,就实现不了&#xff0c…

安科瑞应急疏散照明系统在歌舞娱乐等场所的应用

首先必须明确疏散照明并不包含疏散指示标志,疏散照明是为了提供人员疏散时的必要照明,必须达到规定照度,以便逃生时看清逃生的路径,避免出现恐慌及踩踏事故,而疏散指示标志则是提供疏散路径方向引导的,所以…

Python——基本语法(一)

一、程序和⽤户交互 python 中 使⽤ input 函数实现 input("这⾥写提示信息, 必须使⽤引号引起来")二、变量 In [1]: n input("输入数字") 输入数字8In [2]: n Out[2]: 81.变量命名潜规则: 不要以单下划线和双下划线开头;如&…

从零开始的 dbt 入门教程 (dbt core 命令进阶篇)

引 根据第一篇文章的约定,我想通过接下来的几篇文章带大家进一步了解 dbt 的用法,原计划这篇文章我会介绍 dbt 命令的进阶用法,进一步认识 dbt 的配置以及如何创建增量表等等零零散散十几个方面的知识点,结果在我写完命令部分发现…

CMake TcpServer项目 链接静态库/动态库

一、链接静态库 查看项目结构 hehedalinux:~/Linux/LinuxServerCpp-Link$ tree . ├── CMakeLists.txt ├── include │ ├── common │ │ ├── Buffer.h │ │ ├── Channel.h │ │ └── Log.h │ ├── http │ │ ├── HttpRequest…

Android Studio 项目结构

manifests:用于存放安卓程序的配置文件 AndroidManifest.xml:这是Android应用程序的清单文件,包含了应用程序的基本信息和组件声明等java:Java源代码文件存放的根目录 主代码 com.example.app:应用程序的主包名&#x…

nginx重定向,根据端口重定向

//直接跳转 if ($server_port 9058 ) {# return 301 https://$host$request_uri;return 301 http://www.baidu.com; }//重定向,不跳转域名,还是原域名 location / {if ($server_port 9058 ) {proxy_pass http://ts.***.***.com:9059;} }$args:GET请求…

世微AP5160宽电压 LED 降压型恒流芯片14-18V 3A 电源PCB线路

这是一款14-18V 3A 电流的PCB设计方案. 运用的是世微AP5160 电源驱动IC,这是一款效率高,稳定可靠的 LED 灯恒流驱动控制芯片,内置高精度比较器,固定 关断时间控制电路,恒流驱动电路等,特别适合大功率 LED 恒流驱动。 …

import { ArrowRight } from “@element-plus/icons-vue“;

今天下午快被这个问题折磨疯了 虽然知道这个问题怎么产生的 但项目里那个碍眼的红线就是去不掉 后来才发现 这是插件的锅 我的心情 你知道我想要说什么的 想必能看到这篇文章的 也知道这个问题是怎么产生的 vue3ts使用的时候 默认是需要带上文件名的 但是引入el组件时 …

yum仓库及NFS共享

目录 一.yum仓库的基本原理 1.Yum概述: 2.Yum实现过程: 二. yum配置文件及命令: 1. 主配置文件: 2. 仓库设置文件: 3 .日志文件: ​编辑4.yum命令详解: 三. 搭建仓库的方式: …

transbigdata笔记:清理研究区域内的轨迹漂移

1 方法介绍 transbigdata 考虑了三种轨迹漂移,需要被清理 速度阈值:如果当前轨迹数据点与之前(和后续)轨迹数据点之间的速度超过阈值,则视为漂移。 距离阈值:如果当前轨迹数据点与上一个(和后…

Python网络爬虫进阶:自动切换HTTP代理IP的应用

前言 当你决定做一个网络爬虫的时候,就意味着你要面对一个很大的挑战——IP池和中间件。这两个东西听起来很大上,但其实就是为了让你的爬虫不被封杀了。下面我就来给你讲讲如何搞定这些东西。 第一步:创建爬虫IP池的详细过程 首先&#xf…

街机模拟游戏逆向工程(HACKROM)教程:[4]MAME的作弊功能

需要对游戏进行逆向分析,我们首先需要了解游戏的内存系统。在一个游戏的运行过程中,游戏中所有的变动,比如玩家的血量,敌人的血量,玩家所在位置,场景的位置,剩余时间,等等一切&#…

【部署LLaMa到自己的Linux服务器】

部署LLaMa到自己的Linux服务器 1、Llama2 项目获取方法1:有git可以直接克隆到本地方法2:直接下载 2、LLama2 项目部署3、申请Llama2许可4、下载模型权重5、运行 1、Llama2 项目获取 方法1:有git可以直接克隆到本地 创建一个空文件夹然后鼠标…

Pandas加载大数据集

Scaling to large datasets — pandas 2.1.4 documentationhttps://pandas.pydata.org/docs/user_guide/scale.html#use-efficient-datatypes官方文档提供了4种方法:只加载需要的列、转化数据类型、使用chunking(转化文件存储格式)、使用Dask…

使用OAK-D双目深度相机为turtlebot3小型移动机器人添加视觉系统

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是Ash…