- 博客(15)
- 收藏
- 关注
原创 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
原创 基于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
原创 基于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
原创 基于串口的labview的上位机显示
用到字符串至字节数转换这个函数,这样就可以把字符串转为十进制显示,转换为数值格式后,需要一个数组索引,假如我收到5组8bit数据,对于温度的测量我没必要全都转换为十进制,为节省资源,我只要第3组的就行(假如我发送的是EE与FF与DD与11与22,我只要DD就行),因此索引处填写2(从第0个数开始),意思是我只要这一次发送过来的数据的第三个数,如图3所示。在这基础上,可以加个布尔灯,每次超过40摄氏度,小灯亮,提供报警,后面的程序可以自己编写,以上仅仅提供了一个串口发送与接收的参考。labview显示面板。
2024-06-19 13:53:24
1635
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人