2016-12-04 8 views
4

Chisel 3ソースコードからVerilogを生成し、UCFファイルを使用してVerilogのトップモジュールポートをFPGAピンにマッピングします。Chisel:入力ポートと出力ポートをinoutピンにマッピング

チゼル側の入力と出力のポートを別々に表現する必要があるデザイン(SDRAMデータピン)のセットがあります。問題は、(AFAIK)Verilogの入力ポートと出力ポートを同じFPGAピンにマッピングできないことです(Verilogを直接入力信号にすると問題は起こりません)。私はとにかく2つの入出力Chiselポートから1つのVerilog入力ポートを生成するためにChisel 3を強制することは知らない。

Chisel(3)ではどのように解決されますか?

答えて

4

Chisel 3でVerilog inoutのサポートをいくつか行っていますが、そのAPIが完全に完成するまでは、inoutから入力、出力、およびある方向に変換するVerilogラッパーを作成する必要があります。私が使用していない別のインターフェイスを公開することができ、単純なラッパーで

module Inout(
    input clock, 
    input write, 
    inout [31:0] data 
); 

    reg [31:0] value; 

    assign data = (write) ? 32'dz : value; 

    always @(posedge clock) begin 
    if (write) 
     value <= data; 
    else 
     value <= value; 
    end 
endmodule 

:たとえば

は、私はいくつかのレジスタから設定するために使用されるか、または読み取ることができinoutのピンでいくつかのVerilogを持っていると言いますINOUT:このラッパーインタフェースはBlackBoxのようにチゼルの設計に使用することができる

module InoutWrapper(
    input clock, 
    input write, 
    input [31:0] dataIn, 
    output [31:0] dataOut 
); 
    wire [31:0] bus; 

    assign bus = (write)? dataIn : 32'dz; 
    assign dataOut = bus; 

    Inout mod (
    .clock(clock), 
    .write(write), 
    .data(bus) 
); 
endmodule 

class InoutWrapper extends BlackBox { 
    val io = IO(new Bundle { 
    val clock = Input(Clock()) 
    val write = Input(Bool()) 
    val dataIn = Input(UInt(32.W)) 
    val dataOut = Output(UInt(32.W)) 
    }) 
} 

そして、ここではそれが機能することを示すためにボーナスの簡単な健全性テストです:

class InoutTester extends BasicTester { 

    val mod = Module(new InoutWrapper) 

    val (cycle, done) = Counter(true.B, 4) 
    when (done) { stop(); stop() } 

    mod.io.clock := this.clock // BlackBoxes require explicit clock assignment 
    mod.io.write := false.B // default assignments 
    mod.io.dataIn := "hdeadbeef".U 

    when (cycle === 1.U) { 
    mod.io.write := true.B 
    mod.io.dataIn := 123.U 
    } 
    when (cycle === 2.U) { 
    assert(mod.io.dataOut === 123.U) 
    } 
} 

inoutのポートは、デザインの一番上にある場合、あなたは、デザインのトップのラッパーの似たようなものを作成することができます。

関連する問題