|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
--------------------------
这是模块一,负责输出load,clr,gate信号
--------------------------
- `timescale 10us/1ns
- module fre_cnt(clk,reset,gate,load,clr);
- input clk;
- input reset;
-
- output gate;
- output load;
- output clr;
-
- reg load;
- reg clr;
- reg gate;
- reg [9:0] k;
-
- always@(posedge clk or posedge reset)
- begin
- if(reset)
- begin
- k=0;
- gate=0;
-
- end
- else
- begin
-
- if(k==999)
- begin
- k=0;
- gate=~gate;
- end
- else
- begin
- k=k+1;
- end
-
- end
- end
-
- always @(negedge gate)
- begin
- if(reset)
- begin
-
- load=0;
- end
- else
- begin
- load=1;
- #100 load=0;
- end
- end
- always @(negedge load)
- begin
- if(reset)
- begin
- clr=0;
-
- end
- else
- begin
- clr=1;
- #100 clr=0;
- end
- end
- endmodule
- -----------------------------------
复制代码 这是计数模块,接到前面的频率控制模块,接收load,clr,还有gate信号,输出count。在不接下一模块的情况下,count是可以正常输出的。。。。
-------------------------------
module count(load,clr,gate,sig_in,rst,count,ov);
input load;
input clr;
input gate;
input sig_in;
input rst;
output [15:0] count;
output ov;
reg [15:0] count;
reg ov;
reg [15:0] k;
always@(posedge sig_in or posedge rst)
begin
if(rst)
begin
ov=0;
count=0;
k=0;
end
else
if(k==9999)
begin
k=0;
ov=1;
end
else if(gate) k=k+1;
else if(load) count=k;
else if(clr)
begin
k=0;
count=0;
end
- ------------------------------
- 这是显示模块,接收前面count的数据,问题是count接到mount上之后,仿真发现传来的数据都是高阻态。。。不知为啥?
- ---------------------------------
- module display(mout,clk,rst,out);
- input [15:0] mout;
- input clk,rst;
- output [10:0] out;
- [code]顶层模块
- module plj(reset,clk,sig_in,out,ov);
- input reset;
- input clk;
- input sig_in;
-
- output [10:0] out;
- output ov;
-
- wire [15:0] count;
- wire ov;
- wire [15:0] zong;
- wire[10:0] out;
- wire load,clr,gate;
- fre_cnt i1(.clk(clk),.reset(reset),.gate(gate),.load(load),.clr(clr));
- count i2(.load(load),.clr(clr),.gate(gate),.sig_in(sig_in),.rst(reset),.count(zong),.ov(ov));
- display i3(.mout(zong),.clk(clk),.rst(reset),.out(out));//不接这个模块是可以看到count输出的,接上这个模块,count的输出全是高阻,也就是display这个模块没有数据输入
- endmodule
复制代码 reg [10:0] out;
reg [10:0] out1;
reg [3:0] tmp;
reg [1:0] cnt;
always @(posedge clk)
begin
if(rst)
cnt<=0;
else
begin
cnt<=cnt+1;
case(cnt)
2'b00:begin
out1[10:7]<=4'b1110;
tmp<=mout[3:0];
end
2'b01:begin
out1[10:7]<=4'b1101;
tmp<=mout[7:4];
end
2'b10:begin
out1[10:7]<=4'b1011;
tmp<=mout[11:8];
end
2'b11:begin
out1[10:7]<=4'b0111;
tmp<=mout[15:12];
end
endcase
end
end
always @(tmp)
begin
case(tmp)
4'b0000ut1[6:0]<=7'b1111110;
4'b0001ut1[6:0]<=7'b0000110;
4'b0010ut1[6:0]<=7'b1011011;
4'b0011:out1[6:0]<=7'b1001111;
4'b0100:out1[6:0]<=7'b1100110;
4'b0101:out1[6:0]<=7'b1101101;
4'b0110:out1[6:0]<=7'b1111101;
4'b0111:out1[6:0]<=7'b0000111;
4'b1000:out1[6:0]<=7'b1111111;
4'b1001:out1[6:0]<=7'b1101111;
default:out1[6:0]<=7'b0111111;
endcase
out<=out1;
end
endmodule[/code]
end
endmodule
[/code]
问题再说一遍:第一模块为控制模块,第二模块为计数模块,问题是计数模块在不接后面的显示模块的情况下,count可以正常输出,但是接到display上之后,发现它传输的都是高阻态,导致display模块没有输出。。。仿真图就不贴了。。。不知大牛们看懂我问题没?劳烦各位大牛解答。。。。 |
|