在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4344|回复: 2

[求助] 前一模块正常输出,接到后一模块发现前一模块传来的数据都是高阻。。。求大神指导

[复制链接]
发表于 2012-6-14 16:58:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
--------------------------
这是模块一,负责输出load,clr,gate信号
--------------------------



  1. `timescale 10us/1ns
  2. module fre_cnt(clk,reset,gate,load,clr);
  3.         input clk;
  4.         input reset;
  5.                                                                                         
  6.         output  gate;
  7.         output load;
  8.         output clr;
  9.        
  10.         reg load;
  11.         reg clr;
  12.         reg gate;
  13.         reg [9:0] k;
  14.        
  15.         always@(posedge clk or posedge reset)                                                                         
  16.                 begin
  17.                         if(reset)
  18.                                 begin                               
  19.                                         k=0;
  20.                                         gate=0;
  21.                                        
  22.                                 end
  23.                         else
  24.                                 begin
  25.                                        
  26.                                         if(k==999)
  27.                                                 begin
  28.                                                         k=0;
  29.                                                         gate=~gate;       
  30.                                                 end       
  31.                                         else
  32.                                                 begin
  33.                                                         k=k+1;
  34.                                                 end         
  35.                                        
  36.                                 end
  37.                 end
  38.        
  39.         always @(negedge gate)
  40.                 begin
  41.                         if(reset)
  42.                                 begin
  43.                                        
  44.                                         load=0;
  45.                                 end
  46.                         else
  47.                                 begin
  48.                                         load=1;
  49.                                         #100 load=0;       
  50.                                 end                                       
  51.                 end
  52.         always @(negedge load)
  53.                 begin
  54.                         if(reset)
  55.                                 begin
  56.                                         clr=0;
  57.                                        
  58.                                 end
  59.                         else
  60.                                 begin
  61.                                         clr=1;
  62.                                         #100 clr=0;       
  63.                                 end                       
  64.                 end

  65. endmodule
  66. -----------------------------------


复制代码
这是计数模块,接到前面的频率控制模块,接收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



  1. ------------------------------
  2. 这是显示模块,接收前面count的数据,问题是count接到mount上之后,仿真发现传来的数据都是高阻态。。。不知为啥?
  3. ---------------------------------
  4. module display(mout,clk,rst,out);
  5.         input [15:0] mout;
  6.         input clk,rst;
  7.         output [10:0] out;
  8.         [code]顶层模块
  9. module plj(reset,clk,sig_in,out,ov);
  10.         input reset;
  11.         input clk;
  12.         input sig_in;
  13.        
  14.         output [10:0] out;
  15.         output ov;
  16.        
  17.         wire [15:0] count;
  18.         wire ov;
  19.         wire [15:0] zong;
  20.         wire[10:0] out;
  21.         wire load,clr,gate;
  22.         fre_cnt i1(.clk(clk),.reset(reset),.gate(gate),.load(load),.clr(clr));
  23.         count   i2(.load(load),.clr(clr),.gate(gate),.sig_in(sig_in),.rst(reset),.count(zong),.ov(ov));
  24.         display i3(.mout(zong),.clk(clk),.rst(reset),.out(out));//不接这个模块是可以看到count输出的,接上这个模块,count的输出全是高阻,也就是display这个模块没有数据输入
  25. 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模块没有输出。。。仿真图就不贴了。。。不知大牛们看懂我问题没?劳烦各位大牛解答。。。。
发表于 2012-6-15 09:52:14 | 显示全部楼层
代码罗列凌乱啊。看不懂了。反正开始第一个always是同步时序电路,建议不要用=赋值,用<=赋值了。呵呵
 楼主| 发表于 2012-6-20 08:58:14 | 显示全部楼层
回复 2# duan_dzj


    额。。。是有点乱,没传好。。。其实就是一个16位宽的计数输出,输入到后面显示模块,但是仿真时发现计数输出是高阻(16个z),但是不连接到后面显示模块是可以正常输出的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-13 04:29 , Processed in 0.024989 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表