求解答啊为什么这两个模块在模块里话后会出错啊,求大神解决!
时间:10-02
整理:3721RD
点击:
seg0,seg1仿真后的不到输入的值而是错误的,请问知道问题错在哪里了吗?
module display(data0,data1,data2,data3,clk4ms,com,seg0,seg1);//显示控制模块
input[3:0]data0,data1,data2,data3;
input clk4ms;
output[7:0]seg0,seg1;
output[1:0]com;
reg[1:0]com;
reg[7:0]seg0,seg1;
reg[3:0]datax,datay;
always@(posedge clk4ms)
begin
if(com<2'b10)
com<=com+2'b01;
else
com<=2'b01;
end
always
begin
case(com)
2'b01:begin datax<=data0;datay<=data2;end
2'b10:begin datax<=data1;datay<=data3;end
default:begin datax<=4'b0000;datay<=4'b0000;end
endcase
end
always@(datax)
begin
case(datax)
4'b0000: seg0=8'b00111111;
4'b0001: seg0=8'b00000110;
4'b0010: seg0=8'b01011011;
4'b0011: seg0=8'b01001111;
4'b0100: seg0=8'b01100110;
4'b0101: seg0=8'b01101101;
4'b0110: seg0=8'b01111101;
4'b0111: seg0=8'b00000111;
4'b1000: seg0=8'b01111111;
4'b1001: seg0=8'b01101111;
default: seg0=8'b00000000;
endcase
end
always @(datay)
begin
case(datay)
4'b0000: seg1=8'b00111111;
4'b0001: seg1=8'b00000110;
4'b0010: seg1=8'b01011011;
4'b0011: seg1=8'b01001111;
4'b0100: seg1=8'b01100110;
4'b0101: seg1=8'b01101101;
4'b0110: seg1=8'b01111101;
4'b0111: seg1=8'b00000111;
4'b1000: seg1=8'b01111111;
4'b1001: seg1=8'b01101111;
default: seg1=8'b00000000;
endcase
end
endmodule
////////////////////////////////////////////////////
module datasel(sel,din0,din1,din2,din3,din4,din5,din6,din7,din8,din9,din10,din11,dout0,dout1,dout2,dout3);//显示数据多路选择模块
input[3:0]din0,din1,din2,din3,din4,din5,din6,din7,din8,din9,din10,din11;
input[2:0]sel;
output[3:0]dout0,dout1,dout2,dout3;
reg[3:0]dout0,dout1,dout2,dout3;
always
begin
case(sel)
3'b000:begin dout0=din6; dout1=din7;dout2=din10;dout3=din11; end
3'b001:begin dout0=din0; dout1=din1;dout2=din4;dout3=din5; end
3'b010:begin dout0=din2; dout1=din3;dout2=din0;dout3=din1; end
3'b011:begin dout0=din0; dout1=din1;dout2=din2;dout3=din3; end
3'b100:begin dout0=din8; dout1=din9;dout2=din0;dout3=din1; end
default: begin {dout0,dout1}=8'b0000000;{dout2,dout3}=8'b00000000; end
endcase
end
endmodule
module display(data0,data1,data2,data3,clk4ms,com,seg0,seg1);//显示控制模块
input[3:0]data0,data1,data2,data3;
input clk4ms;
output[7:0]seg0,seg1;
output[1:0]com;
reg[1:0]com;
reg[7:0]seg0,seg1;
reg[3:0]datax,datay;
always@(posedge clk4ms)
begin
if(com<2'b10)
com<=com+2'b01;
else
com<=2'b01;
end
always
begin
case(com)
2'b01:begin datax<=data0;datay<=data2;end
2'b10:begin datax<=data1;datay<=data3;end
default:begin datax<=4'b0000;datay<=4'b0000;end
endcase
end
always@(datax)
begin
case(datax)
4'b0000: seg0=8'b00111111;
4'b0001: seg0=8'b00000110;
4'b0010: seg0=8'b01011011;
4'b0011: seg0=8'b01001111;
4'b0100: seg0=8'b01100110;
4'b0101: seg0=8'b01101101;
4'b0110: seg0=8'b01111101;
4'b0111: seg0=8'b00000111;
4'b1000: seg0=8'b01111111;
4'b1001: seg0=8'b01101111;
default: seg0=8'b00000000;
endcase
end
always @(datay)
begin
case(datay)
4'b0000: seg1=8'b00111111;
4'b0001: seg1=8'b00000110;
4'b0010: seg1=8'b01011011;
4'b0011: seg1=8'b01001111;
4'b0100: seg1=8'b01100110;
4'b0101: seg1=8'b01101101;
4'b0110: seg1=8'b01111101;
4'b0111: seg1=8'b00000111;
4'b1000: seg1=8'b01111111;
4'b1001: seg1=8'b01101111;
default: seg1=8'b00000000;
endcase
end
endmodule
////////////////////////////////////////////////////
module datasel(sel,din0,din1,din2,din3,din4,din5,din6,din7,din8,din9,din10,din11,dout0,dout1,dout2,dout3);//显示数据多路选择模块
input[3:0]din0,din1,din2,din3,din4,din5,din6,din7,din8,din9,din10,din11;
input[2:0]sel;
output[3:0]dout0,dout1,dout2,dout3;
reg[3:0]dout0,dout1,dout2,dout3;
always
begin
case(sel)
3'b000:begin dout0=din6; dout1=din7;dout2=din10;dout3=din11; end
3'b001:begin dout0=din0; dout1=din1;dout2=din4;dout3=din5; end
3'b010:begin dout0=din2; dout1=din3;dout2=din0;dout3=din1; end
3'b011:begin dout0=din0; dout1=din1;dout2=din2;dout3=din3; end
3'b100:begin dout0=din8; dout1=din9;dout2=din0;dout3=din1; end
default: begin {dout0,dout1}=8'b0000000;{dout2,dout3}=8'b00000000; end
endcase
end
endmodule
com信号没赋初值,确定这样可用么?
单个子模块波形仿真是可以的系统默认为0