大概差不多

This commit is contained in:
iridiumR 2022-04-05 17:15:28 +08:00
parent 60050e5fba
commit 453edfb17a
4 changed files with 83 additions and 78 deletions

View file

@ -25,6 +25,7 @@ quit -f
</modelsim_script> </modelsim_script>
<modelsim_script_timing>onerror {exit -code 1} <modelsim_script_timing>onerror {exit -code 1}
vlib work vlib work
@ -48,6 +49,7 @@ quit -f
</modelsim_script_timing> </modelsim_script_timing>
<hdl_lang>verilog</hdl_lang> <hdl_lang>verilog</hdl_lang>
</simulation_settings>*/ </simulation_settings>*/
@ -436,7 +438,7 @@ SIGNAL("code[0]")
PARENT = "code"; PARENT = "code";
} }
SIGNAL("seg") SIGNAL("sel")
{ {
VALUE_TYPE = NINE_LEVEL_BIT; VALUE_TYPE = NINE_LEVEL_BIT;
SIGNAL_TYPE = BUS; SIGNAL_TYPE = BUS;
@ -446,24 +448,24 @@ SIGNAL("seg")
PARENT = ""; PARENT = "";
} }
SIGNAL("seg[1]") SIGNAL("sel[1]")
{ {
VALUE_TYPE = NINE_LEVEL_BIT; VALUE_TYPE = NINE_LEVEL_BIT;
SIGNAL_TYPE = SINGLE_BIT; SIGNAL_TYPE = SINGLE_BIT;
WIDTH = 1; WIDTH = 1;
LSB_INDEX = -1; LSB_INDEX = -1;
DIRECTION = OUTPUT; DIRECTION = OUTPUT;
PARENT = "seg"; PARENT = "sel";
} }
SIGNAL("seg[0]") SIGNAL("sel[0]")
{ {
VALUE_TYPE = NINE_LEVEL_BIT; VALUE_TYPE = NINE_LEVEL_BIT;
SIGNAL_TYPE = SINGLE_BIT; SIGNAL_TYPE = SINGLE_BIT;
WIDTH = 1; WIDTH = 1;
LSB_INDEX = -1; LSB_INDEX = -1;
DIRECTION = OUTPUT; DIRECTION = OUTPUT;
PARENT = "seg"; PARENT = "sel";
} }
TRANSITION_LIST("clk") TRANSITION_LIST("clk")
@ -485,9 +487,9 @@ TRANSITION_LIST("clr")
NODE NODE
{ {
REPEAT = 1; REPEAT = 1;
LEVEL 1 FOR 370.0; LEVEL 1 FOR 260.0;
LEVEL 0 FOR 30.0; LEVEL 0 FOR 30.0;
LEVEL 1 FOR 600.0; LEVEL 1 FOR 710.0;
} }
} }
@ -578,9 +580,9 @@ TRANSITION_LIST("load")
NODE NODE
{ {
REPEAT = 1; REPEAT = 1;
LEVEL 0 FOR 220.0; LEVEL 0 FOR 370.0;
LEVEL 1 FOR 50.0; LEVEL 1 FOR 20.0;
LEVEL 0 FOR 730.0; LEVEL 0 FOR 610.0;
} }
} }
@ -752,7 +754,7 @@ TRANSITION_LIST("code[0]")
} }
} }
TRANSITION_LIST("seg[1]") TRANSITION_LIST("sel[1]")
{ {
NODE NODE
{ {
@ -761,7 +763,7 @@ TRANSITION_LIST("seg[1]")
} }
} }
TRANSITION_LIST("seg[0]") TRANSITION_LIST("sel[0]")
{ {
NODE NODE
{ {
@ -1115,8 +1117,8 @@ DISPLAY_LINE
DISPLAY_LINE DISPLAY_LINE
{ {
CHANNEL = "seg"; CHANNEL = "sel";
EXPAND_STATUS = EXPANDED; EXPAND_STATUS = COLLAPSED;
RADIX = Binary; RADIX = Binary;
TREE_INDEX = 35; TREE_INDEX = 35;
TREE_LEVEL = 0; TREE_LEVEL = 0;
@ -1125,7 +1127,7 @@ DISPLAY_LINE
DISPLAY_LINE DISPLAY_LINE
{ {
CHANNEL = "seg[1]"; CHANNEL = "sel[1]";
EXPAND_STATUS = COLLAPSED; EXPAND_STATUS = COLLAPSED;
RADIX = Binary; RADIX = Binary;
TREE_INDEX = 36; TREE_INDEX = 36;
@ -1135,7 +1137,7 @@ DISPLAY_LINE
DISPLAY_LINE DISPLAY_LINE
{ {
CHANNEL = "seg[0]"; CHANNEL = "sel[0]";
EXPAND_STATUS = COLLAPSED; EXPAND_STATUS = COLLAPSED;
RADIX = Binary; RADIX = Binary;
TREE_INDEX = 37; TREE_INDEX = 37;

View file

@ -80,4 +80,14 @@ set_global_assignment -name VERILOG_FILE jyh_4490_3_encoder.v
set_global_assignment -name VECTOR_WAVEFORM_FILE Waveform.vwf set_global_assignment -name VECTOR_WAVEFORM_FILE Waveform.vwf
set_global_assignment -name VERILOG_FILE jyh_4490_3_counter.v set_global_assignment -name VERILOG_FILE jyh_4490_3_counter.v
set_global_assignment -name VERILOG_FILE jyh_4490_3_entry.v set_global_assignment -name VERILOG_FILE jyh_4490_3_entry.v
set_location_assignment PIN_88 -to clk2
set_location_assignment PIN_112 -to code[6]
set_location_assignment PIN_100 -to code[5]
set_location_assignment PIN_104 -to code[4]
set_location_assignment PIN_111 -to code[3]
set_location_assignment PIN_106 -to code[2]
set_location_assignment PIN_110 -to code[1]
set_location_assignment PIN_103 -to code[0]
set_location_assignment PIN_126 -to sel[1]
set_location_assignment PIN_119 -to sel[0]
set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top

View file

@ -1,19 +1,37 @@
module jyh_4490_3_encoder(codeout,indec,indec2,clk,seg); //七段四位译码器
input[3:0] indec,indec2; module jyh_4490_3_encoder(sel,codeout,clk, d1, d2, d3, d4);
input clk; input clk;
output reg [1:0] seg=2'b01; input [6:0] d1, d2, d3, d4;
output reg [6:0] codeout; output reg [3:0] sel; //位选
output reg [6:0] codeout; //型码
reg n = 1;
//当前位置数字
reg [6:0] code_loc=2'B01;
reg [1:0] loc;
//循环移位
always @(posedge clk) always @(posedge clk)
begin begin
if(n==1) if(loc==2'b01)
loc=2'b10;
else
loc=2'b01;
end
always @(*)
begin begin
n<=2; sel = 4'b0000;
if(seg==2'b01) case (loc)
2'b01: begin code_loc = d1; sel = 4'b10; end
2'b10: begin code_loc = d2; sel = 4'b01; end
endcase
end
always @(*)
begin begin
case (indec) case (code_loc)
4'd0: codeout<=7'b1111110; 4'd0: codeout<=7'b1111110;
4'd1: codeout<=7'b0110000; 4'd1: codeout<=7'b0110000;
4'd2: codeout<=7'b1101101; 4'd2: codeout<=7'b1101101;
@ -27,31 +45,5 @@ always @ (posedge clk)
default: codeout<=7'bx; default: codeout<=7'bx;
endcase endcase
end end
if(seg==2'b10)
begin
case (indec2)
4'd0: codeout<=7'b1111110;
4'd1: codeout<=7'b0110000;
4'd2: codeout<=7'b1101101;
4'd3: codeout<=7'b1111001;
4'd4: codeout<=7'b0110011;
4'd5: codeout<=7'b1011011;
4'd6: codeout<=7'b1011111;
4'd7: codeout<=7'b1110000;
4'd8: codeout<=7'b1111111;
4'd9: codeout<=7'b1111011;
default: codeout<=7'bx;
endcase
end
end
if(n==2)
begin
n<=1;
codeout<=7'b0;
if(seg==2'b10)
seg<=2'b01;
else if(seg==2'b10)
seg<=2'b01;
end
end
endmodule endmodule

View file

@ -1,12 +1,12 @@
module jyh_4490_3_entry(out1, out0, code, seg, CO, module jyh_4490_3_entry(out1, out0, code, sel, CO,
// 十位输出 个位输出 数码管型码 数码管位码 /借位标志位 // 十位输出 个位输出 数码管型码 数码管位码 /借位标志位
in1, in0, load, clk, clk2, clr, en, upd); in1, in0, load, clk, clk2, clr, en, upd);
// 十位装载 个位装载 装载信号 时钟信号 数码管时钟 清零信号 使能信号 正反计数标志位 // 十位装载 个位装载 装载信号 计数时钟信号 数码管时钟 清零信号 使能信号 正反计数标志位
output [3:0] out1; output [3:0] out1;
output [3:0] out0; output [3:0] out0;
output [6:0] code; output [6:0] code;
output [1:0] seg; output [1:0] sel;
output CO; output CO;
input [3:0] in1; input [3:0] in1;
input [3:0] in0; input [3:0] in0;
@ -33,12 +33,13 @@ jyh_4490_3_counter c1(
.en(en), .en(en),
.upd(upd)); .upd(upd));
//四位数码管译码器
jyh_4490_3_encoder e1( jyh_4490_3_encoder e1(
.codeout(code), .codeout(code),
.indec(out0), .d1(out0),
.indec2(out1), .d2(out1),
.clk(clk2), .clk(clk2),
.seg(seg) .sel(sel)
); );
endmodule endmodule