zoukankan      html  css  js  c++  java
  • Chisel Tutorial(七)——模块

    下面内容根据2015-7-10版的Chisel 2.2 Tutorial整理


    Chisel中的模块与Verilog HDL中模块的概念十分相似,都是用层次结构描写叙述电路。Chisel中的module是一个类,其定义遵循下面几点:

    •  继承自Module
    •  有一个命名为io的port
    •  在其构造函数中连接子电路

    例如以下是一个21选择器的模块定义:

    class Mux2 extends Module{
      val io = new Bundle{
      val sel = UInt(INPUT, 1)
      val in0 = UInt(INPUT, 1)
      val in1 = UInt(INPUT, 1)
      val out = UInt(OUTPUT, 1)
      }
      io.out := (io.sel & io.in1) | (~io.sel & io.in1)
    }

    在模块的内部使用到了Chisel中的一个操作符“:=”用来将右边的输出与左边的输入连接起来。

    模块的层次

    如今能够使用子模块构建模块,从而实现电路的层次结构。以下是一个4输入选择器的样例,是通过三个2输入选择器构建的。

    class Mux4 extends Module{
      val io = new Bundle{
      val in0 = UInt(INPUT, 1)
      val in1 = UInt(INPUT, 1)
      val in2 = UInt(INPUT, 1)
      val in3 = UInt(INPUT, 1)
      val sel = UInt(INPUT, 2)
      val out = UInt(OUTPUT, 1)
      }
      val m0 = Module(new Mux2())
      m0.io.sel := io.sel(0)
      m0.io.in0 := io.in0
      m0.io.in1 := io.in1
    
      val m1 = Module(new Mux2())
      m1.io.sel := io.sel(0)
      m1.io.in0 := io.in2
      m1.io.in1 := io.in3
    
      val m2 = Module(new Mux2())
      m2.io.sel := io.sel(1)
      m2.io.in0 := m0.io.out
      m2.io.in1 := m1.io.out
    
      io.out := m2.io.out
    
    }

    上例中创建了三个Mux2子模块,然后将这个三个模块连接起来,构成了一个4输入选择器。



  • 相关阅读:
    Introduction to XQuery in SQL Server 2005
    [译]Cassandra 架构简述
    冬日绘版实录
    网页实现串口TCP数据通讯的两种方案
    (转)感知哈希算法
    CoreParking
    单线程扫描电脑所有文件与并行计算扫描电脑所有文件所用时间?
    强名称程序集
    一些题(六)
    一些题(五)
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7354217.html
Copyright © 2011-2022 走看看