自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 野火i2c控制模块

i2c_用户模块直接看野火A7教程代码(OV7725里的)非常详细。图1 i2c驱动模块。

2025-03-30 20:31:47 141

原创 i2c_ctrl 模块的使用!

scl和dri_clk是4倍关系(如图1参数所示,输入clk和i2C_clk的时钟后,代码会默认生成4倍于i2c_clk的驱动时钟dri_clk)用户编写用户接口模块的时候需要注意一下:读写到芯片中的时间最大为10ms:因此用户需要控制好i2c_exec的拉高时间!i2c_exec:拉高一个时钟周期(dri_clk的一个时钟周期)数据开始写/读。i2c_rh_wl:一直拉高的时候表示开始读,一直拉低则表示开始写。i2c_data_r:从eeprom中读取的数据。i2c_data_w:要写入的数据。

2025-03-27 12:19:56 168

原创 野火DDR3的读写(详解)

读fifo的读时钟是(100Mhz),读fifo的读使能是怎样才拉高呢:在写入了1024个数据后,才拉高(并一直拉高,循环读取数据数据1-1024)。这样就形成了闭环: 上面说到从写fifo端被读出的数据只需要128*2个数据就够了(突发两次),第一次写fifo中的写数据计数器大于126然后ddr3读取数据128个数据(在读的过程中,写fifo中还会写入用户数据,因此不必担心读不够128个数据给ddr3),第二次大于126个数据后,ddr3就再次从写fifo读取128个数据!因此写入数据就完成。

2025-03-25 14:53:55 403

原创 udp协议收/发模块

图m 转化图图4图5 rec_data相关的代码(先接收到的数放高位)

2025-03-23 18:42:14 813

原创 基于Native接口的DDR3读写模块

用户只需要拉高一个时钟周期的rd_start信号就行,然后在p1_cmd_addr输入要读的地址!最后从fifo数据口会返还64个128bit的数据!图3中没标出来输出的数据口!发长度:64(随着代码参数可以更改)。用户输入数据是128位宽的,输出的也是128位宽的。图1是整体流程框架。整个读写DDR3的框架已被封装好,用户只需要关心怎么使用即可。图2 写数据用户框架。图3 读数据用户框架。

2025-03-22 21:17:21 209

原创 VGA (HDMI)_TIMING模块的使用

这个模块已经给了所有的参数:通过改值就可以得到任意分辨率的VGA/HDMI的显示:如图1 所示,图像数据是32位宽的,但是对于 HDMI来说数据信号只要24Bit就够了,如图2 所示。如果不是外部输入的信号,可以注释掉 input wire [31:0] rgb_pixel!图2 将32bit的低24位提取出来,进行输出给fpga,然后FPGA进行转换成TMDS编码格式输出给HDMI设备。

2025-03-22 14:53:00 127

原创 VESA解读(VGA)

以640x480_60hz为例:RGB一共8位(3,3,2):时钟:25.175Mhz。图1 VESA时序标准。

2025-03-22 13:44:10 143

原创 基于FPGA的图像处理(HDMI)

总体流程,如图1所示,因为暂时没有基于HDMI图像处理的相关项目,FPGA目前就处于一个缓存数据的作用(数据可以在这里进行处理,然后再传给HDMI)。图2是总的RTL视图:TMDS解码以及差分原语网上很多,这里就不过于多说了。由于没有对图像进行相关处理,目前就是作为一个拓展屏幕进行使用。

2025-03-21 19:49:09 143

原创 属于自己的DDR3读写控制!

因为的在axi_read模块中声明rd_fifo_rd_en =M_AXI_READY,M_AXI_READY刚开始要初始化,属于高阻态,会扰乱fifo计数器里的值),大于话就把里面数给输出出来给用户。在图2中,写入了512个16位宽数据后,wr_data_count计数器显示可以读取的数有128个(64位宽的数据),同时wr_start信号拉高,表明要将128个64位宽的数通过B模块写入到ddr3中(如图3所示),写入DDR3后结束后,同时进行地址的更新(初始地址0+1024)(图3)。

2025-03-21 17:49:23 304 1

原创 基于VIVADO的FFT实验

实验目标:输入给FFT ip核500Khz的 16位宽的正弦波。图1 中输出的fft点数(M_AXI_DATA_TUSER[23:0])用户需要的部分只是低11位宽!输出的M_AXI_DATA_TDATA低16为和高16位包含了实数部分和虚数部分。这里我们不开根号了。得到的最高值下对应的点数INDEX就是对应的FFT点数了,然后可以根据这个点数计算出此时的频率!经过仿真,S_0是实数平方+虚部平方的最高值,其最高处的INDEX点数为20(对应的频率大概为488Khz, 接近500Khz)

2025-03-19 22:03:14 137

原创 AXI协议详解

但是,当要取消复位(deassertion)时,必须与 ACLK 时钟信号的上升沿同步进行,也就是只有在 ACLK 的上升沿到来时,才能将 ARESETn 信号置为无效的高电平状态。我使用选通信号,导致只发送8bit[23:16]数据,那么地址的递增变为0 ,1 ,2, 3。那么这个32bit的数据的低8位会被忽略掉,其他的bit的数据会依次填入0x01,0x02, 0x03这三个地址。递增的值取决于传输的大小。读/写数据位宽可以是:8,16,32,64,128,256,512,1024bit。

2025-03-19 12:47:47 652

原创 fifo ip核笔记

写文章的用意是用于个人的笔记:

2025-03-18 22:33:16 100

原创 两个正弦信号变一个锯齿波(FPGA实现)

(FPGA)两个正余弦波形转一个锯齿波

2024-06-22 16:35:34 2327

原创 基于串口的labview的上位机显示

用到字符串至字节数转换这个函数,这样就可以把字符串转为十进制显示,转换为数值格式后,需要一个数组索引,假如我收到5组8bit数据,对于温度的测量我没必要全都转换为十进制,为节省资源,我只要第3组的就行(假如我发送的是EE与FF与DD与11与22,我只要DD就行),因此索引处填写2(从第0个数开始),意思是我只要这一次发送过来的数据的第三个数,如图3所示。在这基础上,可以加个布尔灯,每次超过40摄氏度,小灯亮,提供报警,后面的程序可以自己编写,以上仅仅提供了一个串口发送与接收的参考。labview显示面板。

2024-06-19 13:53:24 1635

原创 DAC: 野火DAC板卡模块浅析

笔记内容。

2024-06-14 17:48:34 983

空空如也

空空如也

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

TA关注的人

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