risc-v中文社区

 找回密码
 立即注册
查看: 1164|回复: 0

[原创] 用chisel做一个4-2编码器

[复制链接]

347

主题

564

帖子

2237

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2237
发表于 2021-8-18 08:44:00 | 显示全部楼层 |阅读模式
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  [3:0] io_a,
  output [1:0] io_b
);
  wire  _T = io_a == 4'h1; // @[Encoder.scala 12:13]
  wire  _T_1 = io_a == 4'h2; // @[Encoder.scala 14:20]
  wire  _T_2 = io_a == 4'h4; // @[Encoder.scala 16:20]
  wire [1:0] _GEN_0 = _T_2 ? 2'h2 : 2'h3; // @[Encoder.scala 16:29]
  wire [1:0] _GEN_1 = _T_1 ? 2'h1 : _GEN_0; // @[Encoder.scala 14:29]
  assign io_b = _T ? 2'h0 : _GEN_1; // @[Encoder.scala 10:8 Encoder.scala 13:10 Encoder.scala 15:10 Encoder.scala 17:10 Encoder.scala 19:10]
endmodule

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



Archiver|手机版|小黑屋|risc-v中文社区

GMT+8, 2024-4-27 17:16 , Processed in 0.013820 second(s), 17 queries .

risc-v中文社区论坛 官方网站

Copyright © 2018-2021, risc-v open source

快速回复 返回顶部 返回列表