自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 ADC(tlv5618)驱动设计

TLV5618型DAC芯片输出电压计算原理。

2024-05-14 21:28:29 270 2

原创 FPGA实现画人脸框

四、保存上面所得的四个顶点坐标值(利用前一帧到当前帧的间隙来保存坐标值,从而供当前帧来实时使用)。一、既然用两帧连续的肤色图像,则需要对图像延迟一拍,以此来得到人脸图像的开始标志和介素标志。三、 根据上面所得的人脸图像的横纵坐标,从而可确定出框的四个顶点坐标。,一种是二值化中值滤波、膨胀腐蚀后的人脸检测效果。二、利用行场计数器,得到人脸图像的横纵坐标。用按键来控制识别效果,一种是原图的。至此,便得到了人脸框啦。五、原图的行场计数器。六、人脸框和原图输出。

2024-04-15 21:59:52 243 1

原创 FPGA实现伽玛变换

伽玛变换又名指数变换、幂次变换或幂律变换,是另一种采用非线性变换的图像增强方法。采用的是查找表的方式,先用matlab进行伽马变换,然后生成mif文件,将其存在rom中,然从rom中读取即可。信号同步处只延迟一个时钟,因为输入从rom中读出需要花费一个clk。表达式一般为S=C*r^。

2024-04-05 20:57:17 416 1

原创 FPGA实现中值滤波(采用shift_ram的ip核)

中值滤波模块中还包含着filter_3x3模块和sort模块,而filter_3x3模块中又需要用到shift_ram的ip核模块。

2024-03-31 17:49:27 434 1

原创 FPGA人脸识别检测(先获取人脸图像以及灰度二值化)

由于图片有空洞等缺陷,所以后面要进行中值滤波、腐蚀、膨胀等算法处理,然后再对人脸进行框选,最后显示出来。最终的成像应该是下面这样的。(后面有时间再接着做哈哈哈)5、通过modelsim将操作后的图片数据写入gray_img.txt里面后,用matlab将txt转成图片。1、先用matlab将图片转换成txt数据,代码如下。读取图片的方式按照博客咸鱼里的方式来做,如下。2、FPGA读取txt数据。4、FPGA顶层模块及仿真。3、FPGA灰度二值化。

2024-03-14 17:53:48 1135 2

原创 modelsim联合仿真和独立仿真

联合仿真,就是在Quartus II上调用Modelsim,进行仿真波形。添加文件后,点击okApply后,点击ok就配置好了。(如上图)接下来在仿真之前,需要进行编译。(如下图)添加波形。(如下图)先重置,再一直跑,再停止,再点击全局视图。按照以上操作后,就能看到所有你想看的波形了。

2024-03-12 18:05:42 633 1

原创 SD卡基本知识

SD卡可分为三类:标准SD卡、MiniSD卡和MicroSD 卡(又叫TF卡)。标准 SD 是规格最大的一种,今天市面上大多数消费级数字相机和摄像机均使用此标准的 SD 卡,这种卡有标准的“缺角”设计。

2024-03-06 22:09:08 1410 1

原创 FPGA实现腐蚀膨胀(形态学滤波)

对于腐蚀膨胀,输入必须是二值图像。二值图像就是指图像上的每一个像素只有两种可能的取值或灰度等级状态,即只有0和1(黑和白),当然也可以设置成0和255,反正只有两种状态就行。

2024-03-02 11:27:25 598 1

原创 对数变换(包括用mif文件生成rom ip核设置)

利用matlab来生成mif文件。

2024-02-29 11:18:30 392

原创 乒乓操作(SDRAM)

在 t1、t3、t5 时刻图像都是残缺帧(新老帧各显示一半图片),在 t2、t4 时刻图像才是完整的一帧,而 VGA 那边可不管,每个时间点都会要一帧图像,这就是错帧现象。,因为当OV5640 帧率 30fps,VGA 帧率 60fps,仿佛刚好可以写一帧读两帧,但是会出现以下的错帧现象。乒乓操作中,每次读的(黑线)都是完整的帧,每一帧读 2 次,这样便没有出现读残缺帧的现象,解决了错帧问题。使用两个缓存区,写缓存区 1 时读缓存区 2,写缓存区 2 时读缓存区 1,读写交替。

2024-02-23 17:42:14 616 1

原创 SDRAM基础知识

sdram有2根bank地址线,13根行地址线,9根列地址线,所以总共有4(2^2)个bank,一个bank是8192(2^13)行512(2^9)列,故一个bank存储单元的个数为4M(8192×512=4194306bit),又因为每个存储单元的位宽是16bit的,所以sdram的总存储容量为256M(4×4M×16=256M)。,进而进行数据的存取操作,而且一次只能对一个 L-Bank 的一个存储单元进行操作。四路控制信号构成 SDRAM 指令集。在对 SDRAM 进行数据存取时,

2024-02-22 12:48:09 389 1

原创 SDRAM仲裁(sdram_arbit)

当状态机处于仲裁状态时,若自动刷新请求、读请求、写请求中的任意一路请求有效,且其他两路请求信号无效,状态跳转到有效请求信号对应状态,对应操作完成后,对应结束信号有效,状态跳回到仲裁状态,等待下一次请求信号。各路请求信号只有在仲裁状态才会被响应,这就保证某一操作正在执行时,不会被新的请求信号打断。若多路请求信号同时有效,优先执行优先级较高的操作,默认优先级为。,初始化完成后,状态跳转到仲裁状态(ARBIT)自动刷新操作>数据写操作>数据读操作。

2024-02-22 00:07:57 397 1

原创 SDRAM读操作(sdram_read)

同时分别写入BA0-BA1的Bank地址和A0-A12的row行地址,激活特定Bank的特定行。同时分别写入BA0-BA1的Bank地址和A0-A8的col列地址(列地址即突发数据的首地址)个时钟周期,一次读突发完成,状态跳转到预充电状态。然后等待4个时钟周期(突发长度为4),此期间为。,随即状态跳转预充电等待状态 (RD_TRP)2)个时钟周期,预充电完成,激活。个时钟周期随即跳转到读数据状态。行被关闭,状态跳转到写结束状态。完成,状态跳转到读指令状态。,随即状态跳转预充电等。,随即跳转到潜伏状态。

2024-02-21 23:45:35 371 1

原创 SDRAM写操作(sdram_write)

个时钟周期,预充电完成,激活行被关闭,状态跳转到写结束状态 (WR_END),随机跳回初始状态。值为 2)个时钟周期,激活完成,状态跳转到写指令状态(WR_WRITE),随即跳转到写数据。首先声明状态机状态变量 write_state,定义状态机个状态名称:初始化状态。,状态机跳转到激活状态(WR_ACTIVE),随即跳转到激活等待状态。个时钟周期,一次写突发完成,状态跳转到预充电状态(WR_PRE),在此状态等待TRP_CLK(设定值为。、 激活等待状态(WR_TRCD),随即状态跳转预充电等待状态。

2024-02-20 23:38:25 343 1

原创 SDRAM自动刷新(sdram_a_ref)

的自动刷新类似于简化版的初始化操作,只是缺少了上电后的等待时间和模式寄存器配置部分,只包含一次预充电操作和两次自动刷新操作。自动刷新时序图可知,

2024-02-20 12:09:14 470 1

原创 SDRAM初始化(sdram_init)

的初始化是芯片上电后必须进行的一项操作,只有进行了初始化操作的SDRAM 芯片才可被正常使用。但前文又说 200us 内都可能有命令,干脆这里取 T = 200us 吧。,对所有 Bank 进行预充电。然后等待时间 tRP,这期间为。② 200us 时间等待结束后,写入。④ tRC等待时间结束后,再次写入。,然后等待时间 tMRD,这期间为。,然后等待时间 tRC,这期间为。,然后等待时间 tRC,这期间为。③ tRP等待时间结束后,写入。⑤ tRC等待时间结束后,写入。

2024-02-20 11:48:08 443

原创 ov5640_top中的ov5640_data代码结合仿真波形理解

当计数到10且帧图像结束标志pic_flag拉高,真正的帧有效标志信号pic_valid才拉高(代表之后的图像都能正常显示了)。在场有效信号的期间,就能写入一个完整的图像数据(一帧图像)。而href行同步信号跟hsync行同步信号不一样,href是指真实有效的行信号,而且是高电平有效(在href高电平期间完全对应着图像的行数据)。所以每行图像数据H_VALID*2=640*2=1280,正好对应着6个仿真里的8位0~255的ov5640_data计数器(256*5=1280)。

2024-02-19 22:35:05 412

原创 ov5640_top的i2c_ctrl和ov5640_cfg配合

首先先寄存器配置等待计数器cnt_wait计数,计数到最大值-1时自动cfg_start(i2c_start)开始拉高一个时钟周期,然后才开始配置寄存器(包括有写入8位器件地址0x78、16位寄存器地址byte_addr、8位寄存器数据wr_data),当一个寄存器配置完成后,i2c_end才开始拉高一个时钟周期。

2024-02-18 18:35:15 380

原创 OV5640_top中的i2c_ctrl代码结合仿真波形理解

若想要实现数据的连续读/写,可持续拉高读/写使能 rd_en/wr_en,并输入有效的。写入一个时钟的高电平,表示数据读取完成,随后状态机跳转到。”,表 示执行写操作;”,表示进行读操作,控制字节写入完毕后,状态机跳转到。位存储地址或单字节存储地址写入完成后,状态机跳转到。SEND_B_ADDR_H(发送高字节地址状态)SEND_B_ADDR_L(发送低字节地址状态)SEND_D_ADDR(发送器件地址状态);SEND_B_ADDR_L(发送低字节地址状。单字节数据,待数据读取完成户,状态机跳转到。

2024-02-15 15:19:29 1803 1

FPGA实现gamma变换(包括上板和仿真两种方式;以及matlab验证对比)

FPGA实现gamma变换(包括上板和仿真两种方式;以及matlab验证对比)

2024-04-05

FPGA实现腐蚀膨胀(包括上板和仿真两种方式;以及matlab验证对比)

FPGA实现腐蚀膨胀(包括上板和仿真两种方式;以及matlab验证对比)

2024-04-03

FPGA实现对数变换算法

1、MATLAB实现生成对数变换所需rom的mif文件 2、仿真FPGA实现log变换,即通过modelsim读写bmp图片实现log变换 3、MATLAB实现log变换

2024-03-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除