完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
`硬件电路检测了也没有找到问题的原因在哪儿 ,哪位能帮忙分析一下原因呢? 估计应该是SRAM的问题 这里附上SRAM的代码 请各位帮忙分析一下。 //----------------------------------------------- //SRAM address switch. User's SRAM operate have higher priority then display SRAM operate. //User write SRAM when regaddr=2 and read SRAM no need regaddr. //----------------------------------------------- always @ (posedge sys_clk, negedge reset) begin if (!reset) addr <= `TD 18'd0; else if ((nwr_state == 2'b01 && ncs_state[1] == 1'd0 && dnc_state[1] == 1'd1 && regaddr == 2'd2) || (nrd_state == 2'b10 && ncs_state[0] == 1'd0 && dnc_state[1] == 1'd1)) begin addr[17] <= `TD reg_set[2]; addr[16:0] <= `TD reg_x + reg_y * 9'd320; end else if (clear_flag != 2'd0 && clkcount == 3'd3) addr <= `TD {reg_set[2], dispaddr}; else if (clkcount == 3'd1 || clkcount == 3'd2) addr <= `TD {reg_set[3], dispaddr}; end //----------------------------------------------- //Read display color data form SRAM //----------------------------------------------- always @ (posedge sys_clk, negedge reset) begin if (!reset) rgb <= `TD 16'd0; else if (we != 1'd0 && nrd_flag != 1'd1 && (clkcount == 3'd2 || clkcount == 3'd3)) rgb <= `TD io; end //----------------------------------------------- //Write SRAM control. //----------------------------------------------- always @ (posedge sys_clk, negedge reset) begin if (!reset) we <= `TD 1'd1; else if (nwr_state == 2'b01 && ncs_state[1] == 1'd0 && dnc_state[1] == 1'd1 && regaddr == 2'd2) we <= `TD 1'd0; else if (clear_flag != 2'd0 && clkcount == 3'd3) we <= `TD 1'd0; else we <= `TD 1'd1; end //----------------------------------------------- //It's a SRAM read flag, like we. //----------------------------------------------- always @ (posedge sys_clk, negedge reset) begin if (!reset) nrd_flag <= `TD 1'd0; else if (nrd_state == 2'b10 && ncs_state[0] == 1'd0 && dnc_state[1] == 1'd1) nrd_flag <= `TD 1'd1; else nrd_flag <= `TD 1'd0; end //----------------------------------------------- //Read SRAM control //----------------------------------------------- always @ (posedge sys_clk, negedge reset) begin if (!reset) reg_ram <= `TD 16'd0; else if (nrd_flag == 1'd1) reg_ram <= `TD io; else if (nwr_state == 2'b01 && ncs_state[1] == 1'd0 && dnc_state[1] == 1'd1 && regaddr == 3'd4) reg_ram <= `TD db_state[15:0]; end ` |
|
相关推荐
4个回答
|
|
大神能帮忙分析分析吗? 十分着急!!!!!
|
|
|
|
你是不是买到的SRAM是翻新的,我同样的电路和程序,两批板,一批好使,一批不好使,不好使的后面被证明全部是翻新的,打磨过,可能是低速改的高速的
|
|
|
|
感谢版主回复,换了一批新的SRAM 还是一样有这样的问题,同一批板就有一半多不好使的,偶尔换一个能解决问题。但是还是有的不能解决。寻思是不是SRAM时序没有写好。 |
|
|
|
你要先写一个测试程序,网sram里写一批数据在读出来,看看数据是不是有错,有错的话看看规律,看看是哪几bit错了,再用示波器点点波形,看看是不是时钟沿和数据的相位关系的问题!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1702 浏览 1 评论
1460 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1671 浏览 0 评论
943 浏览 0 评论
2469 浏览 0 评论
1507 浏览 38 评论
5706 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 12:23 , Processed in 0.801106 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号