完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
module Column_scan_seg(
input clk, input rst_n, output [1:0] Column_scan ); reg [18:0] counter1; always@(posedge clk or negedge rst_n) begin if(!rst_n) counter1<=19'd0; else if(counter1==499_999) counter1<=19'd0; else counter1<=counter1+1'b1; end reg[1:0] t; always@(posedge clk or negedge rst_n) begin if(!rst_n) t<=2'd0; else if(t==2'd2) t<=2'd0; else t<=t+1'b1; end reg [1:0] Column_scan_0; always@(posedge clk or negedge rst_n) begin if(!rst_n) Column_scan_0<=2'b10; else if(counter1==4999_999) case(t) 2 'd0: Column_scan_0<=2'b10; 2 'd1: Column_scan_0<=2'b01; endcase end assign Column_scan=Column_scan_0; endmodule
|
|
相关推荐
8个回答
|
|
module Column_scan_seg(
clk , rst_n , Column_scan ); input clk ; input rst_n ; output [1:0] Column_scan ; wire [1:0] Column_scan ; reg [18:0] counter1 ; reg [1:0] t ; reg [1:0] Column_scan_0 ; always @(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin counter1<=0; end else if(counter1==4_999_999) begin counter1<=0; end else counter1<=counter1+1; end always @(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin t<=0; end else if(counter1==4_999_999) begin if(t==2) t<=0; else t<=t+1; end end always @(posedge clk or negedge rst_n)begin if(rst_n==1'b0)begin Column_scan_0<=2'b10; end else begin case(t) 0: Column_scan_0<=2'b10; 1: Column_scan_0<=2'b01; endcase end end assign Column_scan = Column_scan_0 ; endmodule
最佳答案
|
|
|
|
回帖奖励 +1 分积分
不太好弄??????
|
|
|
|
|
|
|
|
t 是能取到2的,你case语句并没有对此情况进行考虑,第二个10ms Column_scan_0就会等于不定值
|
|
|
|
当然,我指的是你使用的时钟是50M才是对应的10ms~
|
|
|
|
这个代码真的还挺乱的
|
|
|
|
帮你修改了一下代码
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-5 19:48 , Processed in 0.513639 second(s), Total 54, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号