完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我自己写了一个FIFO,但是我总是不理解Paper中讲的要把读写指针同步,如果我将两个不同时钟产生的读写地址直接比较,产生读写,请问这个亚稳态是怎么产生的,不要复制网上的那些东西,我都看了买就是不太懂,才问的,下面是我的代码
//asysfifo 8*8bit module asys_fifo( w_clk,r_clk,w_en,r_en,rst,din,dout,empty,full); input w_clk,r_clk; input w_en,r_en;//high valid input rst; //low valid input [7:0] din; output [7:0] dout; output empty,full;//empty,full flag bit,high valid reg empty,full; reg [7:0] dout; //internal signal defenition reg [7:0] asys_fifo[7:0]; //asys_fifo ram reg [2:0] w_addr; //write address reg [2:0] r_addr; //read address //MSB defenition reg w_m***; reg r_m***; //write data read data always @(posedge w_clk) if(w_en&&!full) asys_fifo[w_addr]<=din; always @(posedge r_clk) if(r_en&&!empty) dout<=asys_fifo[r_addr]; else dout<=8'dz; //write address read address and w_m*** r_m*** generation always @(posedge w_clk,negedge rst) if(!rst) begin w_addr<=3'b000; w_m***<=0; end else if(w_en&&!full) begin if(w_addr==3'b111) begin w_addr<=3'b000; w_m***<=!w_m***; //MSB qu fan end else begin w_addr<=w_addr+3'd1; w_m***<=w_m***; end end else begin w_addr<=w_addr; w_m***<=w_m***; end always @(posedge r_clk,negedge rst) if(!rst) begin r_addr<=3'b000; r_m***<=0; end else if(r_en&&!empty) begin if(r_addr==3'b111) begin r_m***<=!r_m***; r_addr<=3'b000; end else begin r_m***<=r_m***; r_addr<=r_addr+3'd1; end end else begin r_m***<=r_m***; r_addr<=r_addr; end //empty,full flag generation //empty flag generation always @(*) if(!rst) empty<=1; else if({r_m***,r_addr}=={w_m***,w_addr}) empty<=1; else empty<=0; //full flag generation always @(*) if(!rst) full<=0; else if((r_m***!=w_m***)&&(r_addr==w_addr)) full<=1; else full<=0; endmodule |
|
相关推荐
2个回答
|
|
自己顶起来,不敢沉底
|
|
|
|
时钟相位不同步,可能踩不到正确数据
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
894 浏览 0 评论
基本FPGA或者树莓派或者其它微处理器(尽量压缩成本且完成项目)DFB激光器稳频
1635 浏览 1 评论
2733 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1241 浏览 0 评论
3886 浏览 1 评论
2355 浏览 58 评论
6212 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-9 06:20 , Processed in 0.456683 second(s), Total 43, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号