TA的每日心情 | 难过 2019-11-19 16:03 |
---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 TheWorld 于 2020-6-1 20:13 编辑 ; \/ \8 A; I. W. T9 B" _
: }& Z) d5 p: J" {. e9 O
- `timescale 1ps / 1ps
- //////////////////////////////////////////////////////////////////////////////////
- // Company:
- // Engineer:
- //
- // Create Date: 2020/05/21 21:24:26
- // Design Name:
- // Module Name: counter
- // Project Name:
- // Target Devices:
- // Tool Versions:
- // Description:
- //
- // Dependencies:
- //
- // Revision:
- // Revision 0.01 - File Created
- // Additional Comments:
- //
- //////////////////////////////////////////////////////////////////////////////////
- module counter(
- input [3:0] data_in,
- input load,
- input [1:0] mod_sel,
- input dir_sel,
- input en,
- input rst,
- input clk,
- // output reg [3:0] out,
- output reg [3:0] data);
- // reg [3:0] init;
- reg clr;
- always@(posedge clk)
- begin
- if(rst || clr)
- begin
- data<=4'b0000;
- end
- else
- begin
- if(en)
- begin
- //out<=data;
- case({mod_sel,dir_sel}) //use mod_sel to select mod
- 001: //mod 8, increase
- begin
- if(data<=4'b0110)
- begin
- data<=data+1;
- end
- else
- begin
- data<=0;
- end
- end
- 000: //mod 8, decrease
- begin
- if(data>4'b000)
- begin
- data<=data-1;
- end
- else
- begin
- data<=4'b0111;
- end
- end
- 011: //mod 10, increase
- begin
- if(data<=4'b1000)
- begin
- data<=data+1;
- end
- else
- begin
- data<=0;
- end
- end
- 010: //mod 10, decrease
- begin
- if(data>4'b0000)
- begin
- data<=data-1;
- end
- else
- begin
- data<=4'b1001;
- end
- end
- 101: //mod 16, increase
- begin
- if(data<=4'b1110)
- begin
- data<=data+1;
- end
- else
- begin
- data<=0;
- end
- end
- 100: //mod 16, decrease
- begin
- if(data>4'b0000)
- begin
- data<=data-1;
- end
- else
- begin
- data<=4'b1110;
- end
- end
- default: //avoid mistakes in default case
- begin
- data<=4'b0000;
- end
- endcase
- // out<=data;
- end
- else
- data<=4'b0000;
- end
- end
- always@(posedge clr)
- begin
- if(load==1)
- data<=data_in;
- else
- data<=4'b0000;
- end //load initial value
- always@(mod_sel[0] or mod_sel[1])
- begin
- clr<=1'b1;
- end //reset when the mod is reset
- endmodule
I3 K# U3 H1 g
|
|