完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
设计代码
`timescale 1ns / 1ps module waterlight( input clk, input[4:0] sw, input rset, output reg [7:0] outled ); reg[28:0] counter;//计数模块 wire [7:0] outledload; reg clk_n; parameter tims=29'd1000_000-1; always @(posedge clk or negedge rset) begin if(!rset) counter<=28'b0; else if (counter==tims) begin counter<=28'b0; end else begin counter<=counter+1; end end //always @ (posedge clk ) //begin //if(!rset) //begin //case (sw[0]) //1'b1 :outledload=8'b1000_0000; //1'b0 :outledload=8'b0111_1111; //endcase //end // else outledload<=8'b0000_0000; //end assign outledload= sw[1]?8'b1000_0000:8'b0111_1111; always @ (posedge clk or negedge rset) begin if (sw[1])//left circle begin if (!rset) begin outled=outledload; end else if (counter==tims) begin case (sw[4:2]) 3'b000: outled<={outled[6:0],outled[7]}; 3'b001: outled<={outled[5:0],outled[7:6]}; 3'b010: outled<={outled[4:0],outled[7:5]}; 3'b011: outled<={outled[3:0],outled[7:4]}; 3'b100: outled<={outled[2:0],outled[7:3]}; 3'b101: outled<={outled[1:0],outled[7:2]}; 3'b110: outled<={outled[0],outled[7:1]}; default: outled<=8'b1000_0000; endcase end else outled<=outled; end else begin //right circle if (!rset) begin outled=outledload; end else if (counter==tims) case (sw[4:2]) 3'b000: outled<={outled[0],outled[7:1]}; 3'b001: outled<={outled[1:0],outled[7:2]}; 3'b010: outled<={outled[2:0],outled[7:3]}; 3'b011: outled<={outled[3:0],outled[7:4]}; 3'b100: outled<={outled[4:0],outled[7:5]}; 3'b101: outled<={outled[5:0],outled[7:6]}; 3'b110: outled<={outled[6:0],outled[7]}; default: outled<=8'b1000_0000; endcase else outled<=outled; end end endmodule 仿真文件 `timescale 1ns / 1ps module waterlight_tb( ); reg clk, rset; reg [4:0]sw; wire [7:0] outled; parameter delay=10; waterlight u1( clk, sw, rset, outled ); initial fork clk=0; forever #(delay) clk=~clk; rset=0; # (10*delay) rset=1; sw=5'b00110; join endmodule |
|
相关推荐
2个回答
|
|
|
本帖最后由 卿小小_9e6 于 2020-12-26 14:09 编辑
应该是软件设置的问题。你综合后仿真时显示的波形不全,让它“Zoom Fit”即可。 //------代码没有大的问题 代码里有两段复位处理不太规范(不影响逻辑框架),可酌情考虑是否更改。
|
|
|
3 条评论
|
|
|
之前一段时间 找出原因了 因为 逻辑上的不严谨。复位的优先级低了。导致程序达不到预想效果。
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
NVMe高速传输之摆脱XDMA设计50:主要功能测试结果与分析2 nvmePCIe高速存储
252 浏览 0 评论
NVMe高速传输之摆脱XDMA设计49:主要功能测试结果与分析1
1501 浏览 0 评论
907 浏览 0 评论
855 浏览 0 评论
658 浏览 0 评论
4427 浏览 63 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 20:13 , Processed in 0.842791 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4656