一、环境
quartussii
二、说明
菜鸟一个,代码写的不完美,只是验证学习。
RAM的IP配置:
ram的IP核配置问题,记得把输出寄存器q去掉,直接提取,不然会有两个clk的延时才能读取到数据,造成写时序必须延时两个clk,然后会出现写地址和读地址相同的情况,此时写不进去数据。
三、原理
网上有很多不解释。
四、逻辑
1.初始化RAM,即对RAM清零
2.数据输入,缓存2个CLK
3.相邻数判断 计数器增
4.写入ram(先读取对应地址的原来的数,然后和3的计数器相加)
5.结束判断,就是对输入有效信号vsync缓存两个clk
前一个作为读地址判断标志,后一个作为写数据判断标志
五、代码
`timescale 1ns / 1ps
/*
****日期:2021.2.9
**** ram的IP核配置问题,记得把输出寄存器q去掉,直接提取,不然会有两个clk的延时才能读取到数据,
****造成写时序必须延时两个clk,然后会出现写地址和读地址相同的情况,此时写不进去数据。
****
*/
module histogram(
input clk,
input rst,
input [7:0] data_in,
output[15:0] q,
input vsync //图像有效
);
//DPram
wire [15:0] ram_rd_data_b; //B端口读数据
wire [7:0] address_aw; //A地址
wire [7:0] address_bw; //B地址
wire [15:0] ram_wr_data_a; //A写数据
reg [8:0] w_cnt; //写控制计数器
reg [8:0] r_cnt; //写控制计数器
reg tflag; //清零标志
reg [7:0] buf0; //第一拍数据
reg [7:0] buf1; //第二拍数据
//写计数器,初始化RAM清零操作
always @(posedge clk or negedge rst)begin
if(!rst)begin
t

&spm=1001.2101.3001.5002&articleId=113771046&d=1&t=3&u=289dd3894748465eb524c8bf8e9ddc24)
6340

被折叠的 条评论
为什么被折叠?



