0 简介
这篇文章讲chisel的参数化。chisel的参数化东西是比较多的,打算分两次讲,将其分为初级参数化手段以及高级参数化手段,一次初级参数化,然后两篇高级参数化。
初级参数化比较简单,但是作为后续内容的理解,还是需要讲一下。其中部分内容直接引用自《Digital Design With Chisel》。
初级参数化有两种手段:采用类构造函数的参数化,以及采用类模板的参数化。为什么叫初级参数化?因为其背后的思想和Verilog 使用 parameter传递参数
无区别,都是给每个module传入参数,再例化module即可。
原理是采用scala的构造函数。如下面的代码。scala的构造函数和类声明是一体的。比如声明一个参数n。
在例化的时候直接代入参数即可。
scala作为面向对象的语言,和c++一样有类模板。一些复杂的参数,比如类型都不确定可以直接使用类模板。
如上面所示采用类模板的参数化。模块存在两个参数,dt和n。其中n确定是int, 但是dt的类型需要参数化。这时候就需要用到类模板。
NocRouter是一个类模板,存在一个模板参数T。T可以是任意的data类型比如int, double什么的。[T
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?