joe 发表于 2021-8-18 08:44:00

用chisel做一个4-2编码器

import chisel3._
class Encoder extends RawModule {
val io = IO(new Bundle() {
    val a = Input(UInt(4.W))
    val b = Output(UInt(2.W))
})
io.b := 0.U

when(io.a === 1.U) {
    io.b := 0.U
} .elsewhen(io.a === 2.U) {
    io.b := 1.U
} .elsewhen(io.a === 4.U) {
    io.b := 2.U
} .otherwise {
    io.b := 3.U
}
}
在main中:Driver.execute(Array("--target-dir","generated"),()=> new Encoder)
生成的verilog文件内容如下:
module Encoder(
input io_a,
output io_b
);
wire_T = io_a == 4'h1; // @
wire_T_1 = io_a == 4'h2; // @
wire_T_2 = io_a == 4'h4; // @
wire _GEN_0 = _T_2 ? 2'h2 : 2'h3; // @
wire _GEN_1 = _T_1 ? 2'h1 : _GEN_0; // @
assign io_b = _T ? 2'h0 : _GEN_1; // @
endmodule

页: [1]
查看完整版本: 用chisel做一个4-2编码器