微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > Verilog 輸出高阻抗 求解

Verilog 輸出高阻抗 求解

时间:10-02 整理:3721RD 点击:

小弟目前在做
Mips single cycle的TOP module下的submodule之間的連接
現在初步要連PC和IM
連接完成後
波型圖上的PC端輸出 (d_out[31:0]) 怎麼都是高阻抗,

小弟困擾好多天了,麻煩各位大俠幫幫忙了..

這是top module code*********************


  1. `timescale 1ns / 1ps
  2. module TOP(reset,clk);
  3. input reset,clk;
  4. wire [31:0] d_out_i_addr;
  5. wire [31:0] i_data;

  6. PC mips_PC (
  7. .clk(clk),
  8. .reset(reset),

  9. .d_out(d_out_i_addr)
  10. );

  11. IM mips_IM (
  12. .clk(clk),
  13. .i_addr(d_out_i_addr),
  14. .i_data(i_data)
  15. );
  16. endmodule

复制代码

這是 pc code************************


  1. `timescale 1ns / 1ps
  2. module PC(clk, reset, d_out);
  3.     input            clk, reset;
  4.    
  5.     output  [31:0]  d_out;
  6.     reg     [31:0] d_out;
  7.    
  8.     always @(posedge clk)
  9.     begin
  10.         if (reset==1'b1)
  11.            d_out <= 0;  
  12.         else
  13.        d_out = d_out+4;
  14.     end
  15. endmodule

复制代码

IM code*********************************



  1. `timescale 1ns/100ps
  2. module IM(
  3.                           clk,  // input clock
  4.                           i_addr, // input address
  5.                           i_data  // output data
  6.           );
  7. // parameter declaration
  8. parameter                 P_BITS = 32;
  9. parameter                 P_WORD_DEPTH = 256;
  10. parameter                 P_ADDR_WIDTH = 32;   
  11. parameter                 P_DELAY = 1.6;
  12.    
  13. //input,output declaration     
  14. input                       clk;  // input clock
  15. input  [P_ADDR_WIDTH - 1:0] i_addr; // input address
  16. output [P_BITS - 1:0]       i_data; // output data   
  17. // registers declaration
  18. reg  [P_BITS - 1:0]         i_data; // output data
  19. reg  [8:0]                  index; // for initialization
  20. // (128M)*32 memory
  21. reg  [P_BITS - 1:0]         mem [0:P_WORD_DEPTH - 1]; // define memory
  22.    
  23. // initialize memory value
  24. initial begin
  25.   for(index = 9'b0; index < P_WORD_DEPTH; index = index + 9'b1)
  26.     mem[index] = 8'b0;  
  27.   
  28.   // load instruction
  29.   $readmemh("pattern.txt", mem);
  30. end
  31. // function definition
  32. always@(posedge clk) begin :memaccess_proc
  33.   i_data <= #P_DELAY mem[i_addr[9:2]];   
  34. end // end memaccess_proc
  35. endmodule

复制代码

Topmodule Testbench*****************************


  1. `timescale 1ns / 1ps

  2. module TOP_test;
  3. // Inputs
  4. reg reset;
  5. reg clk;


  6. reg [31:0] i_addr;//IM in

  7. //outputs
  8. wire [31:0] d_out; //pc out
  9. wire [31:0] i_data;//im out

  10. // Instantiate the Unit Under Test (UUT)
  11. TOP mips_top (
  12.   .reset(reset),
  13.   .clk(clk)
  14. );

  15. always #10//5ns, clock1從1->0 or 0->1, clock period 10ns
  16. begin
  17. clk=~clk;
  18. end
  19. initial begin
  20.   // Initialize Inputs
  21. clk=0;
  22. #2  reset=1;
  23.    #12 reset=0;
  24.   // Wait 100 ns for global reset to finish
  25.   #100;
  26.         
  27.   // Add stimulus here
  28.    end

  29. initial
  30. begin  
  31.      $dumpfile("TOP_test_go.fsdb");
  32.      $dumpvars;      
  33. end   
  34. endmodule

复制代码

Isim

module TOP_test;
// Inputs
reg reset;
reg clk;


reg [31:0] i_addr;//IM in

//outputs
wire [31:0] d_out; //pc out
wire [31:0] i_data;//im out
d_out, i_data是top_test里面的,根本没有被赋值,当然是高阻或者X。
层次都搞不清楚。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top