📄 bcd.v.bak
字号:
/*
4位二进制数转BCD码,由拨码键盘输入,结果由数码管显示
*/
module bcd (clk,rst,a,c,en,en1 );
input clk,rst;
input [3:0] a ;
output[7:0] c ;
reg [7:0] c ;
output[1:0] en ;
reg[1:0] en;
output[5:0] en1;
reg[7:0] code_data;
reg[3:0] c_tmp;
reg[19:0] cnt;
assign en1=6'b111111;
always@(posedge clk)
begin
if(!rst)
cnt<=0;
else if(cnt!=20'h5ffff)
cnt<=cnt+1;
else
cnt<=0;
end
always@(posedge clk)
begin
if(!rst)
en<=2'b01;
else begin
if(cnt==20'h5ffff)
en<=~en;
end
end
always@(en)
begin
case(en)
2'b01:
c_tmp=code_data[3:0];
2'b10:
c_tmp=code_data[7:4];
default:
c_tmp=0;
endcase
end
always @(a)
begin
case (a[3:1])
3'b000 : code_data [7:1] = 7'b0000000;
3'b001 : code_data [7:1] = 7'b0000001;
3'b010 : code_data [7:1] = 7'b0000010;
3'b011 : code_data [7:1] = 7'b0000011;
3'b100 : code_data [7:1] = 7'b0000100;
3'b101 : code_data [7:1] = 7'b0001000;
3'b110 : code_data [7:1] = 7'b0001001;
3'b111 : code_data [7:1] = 7'b0001010;
default : code_data [7:1] = {7{1'b0}};
endcase
code_data[0] = a[0];
end
always@(c_tmp)
begin
case(c_tmp)
4'b0000:
c=8'b0000_0011;
4'b0001:
c=8'b1001_1111;
4'b0010:
c=8'b0010_0101;
4'b0011:
c=8'b0000_1101;
4'b0100:
c=8'b1001_1001;
4'b0101:
c=8'b0100_1001;
4'b0110:
c=8'b0100_0001;
4'b0111:
c=8'b0001_1111;
4'b1000:
c=8'b0000_0001;
4'b1001:
c=8'b0001_1001;
4'b1010:
c=8'b0001_0001;
4'b1011:
c=8'b1100_0001;
4'b1100:
c=8'b0110_0011;
4'b1101:
c=8'b1000_0101;
4'b1110:
c=8'b0110_0001;
4'b1111:
c=8'b0111_0001;
endcase
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -