版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
6.黑盒西安交通大學XI'ANJIAOTONGUNIVERSITY目
录一、例化黑盒二、复制Verilog文件三、内联Verilog
文件四、inout端口2一、例化黑盒正安文是大XPANIIAOT
UNIVERSITY3>Chisel
的功能相对Verilog
来说还不完善,设计人员在当前版本下无法实现的功能,就需要用Verilog来实现。Chisel接口
(Verilog)
Chisel接口BlackBox>向Chisel代码提供用Verilog
设计的电路的接口例化黑盒1.1背景4在Chisel模块里例化另一个模块,生成Verilog代码时,端口名字里会增加“io_”。假设有一个外部的Verilog
模块,端口列表声明如下:module
Dut(input[31:0]a,input
clk,input
reset,output[3:0]b)Dut
u0(a(u0_a),.clk(u0_clk),.reset(u0_reset),b(u0_b))例化黑盒1.2例化黑盒按照Verilog
的语法,例化代码如下:5思考:倘若将上述Verilog
模块声明成普通的Chisel
模块,然
后直接例化使用,例化的Verilog代码就会变成:Dut
u0(io_a(io_u0_a),io_clk(io_u0_clk),io_reset(io_u0_reset),io_b(io_u0_b))这样做在Chisel层面上会成功吗?不允许模块内部连线为空例化黑盒6class
UseDut
extends
Module{val
io=1O(new
Bundle{val
toDut_a=Input(UInt(
32.W))val
toDut_b=Output(UInt(
4.W))val
u0=Module(
new
Dut)u0.io.a:=
io.toDut_au0.
io.clk:=
clocku0.io.reset:=
resetio.toDut_b
:=
u0.io.bclass
Dut
extends
BlackBox{valio
=IO(
new
Bundle{
val
a=Input(Ulnt(
32.W))
val
clk=Input(Clock())val
reset=Input(Bool()valb=Output(UInt(4
.W))例化黑盒定义Dut
类
时
,不继承自Module,
而继承自BlackBox。无需给黑盒的端口名加
上
"io_"71.3
Map[String,Param]BlackBox
的构造方法可以接收一个Map[String,Param]
类型的参数。作用
:使得例化外部的Verilog
模块时具有配置模块的“#(参数配置)”。映射的键固定是字符串类型,对应Verilog里声明的参数名。映射的值对应传入的配置参数,可以是字符串,也可以是整数和浮点数。例化黑盒8例化黑盒实例importchisel3.experimental.class
Dut
extendsBlackBox(Map(
"DATA_WIDTH"->
32
,"MODE"
->
"
Sequential","RESET"
->
"Asynchronous"
)){val
io
=1O(
new
Bundle
{val
a=Input(UInt(32.W))val
clk=Input(Clock()val
reset=Input(Bool()val
b=Output(UInt(4,W))单例对象chisel3.experimental里定义了相应的隐式转换,可以把BigInt、Int、Long、Double
和String
转换成对应的Param类型1.4动态定义模块的名字在转成Verilog
时的模块名不使用定义的类名,而是使用重写的desiredName
方法的返回字符串override
def
desiredName="Tea"class
Salt
extends
Module{val
io=IO(
new
Bundle
{})val
drink
=Module(
new
Coffee)override
def
desiredName
=
"
SodiumMonochloride"class
Coffee
extends
BlackBox{val
io=1O(new
Bundle{val
l=Input(UInt(
32.W))val
O=Output(UInt(32.W))例化黑盒使用重写的desiredName方法将Salt改为SodiumMonochloride使用重写的desiredName
方法将Coffee改为Tea10二、复制Verilog文件正安文是大XPANIIAOT
UNIVERSITY112.1复制方式一>chisel3.util
包里有一个特质HasBlackBoxResource如果在黑盒类里混入这个特质,并且在src/main/resources文件夹里有对应的Verilog源文件,则在Chisel转换成Verilog
时,就会把Verilog
文件一起复制到目标文件夹。复
制Verilog
文
件12复
制Verilog
文
件2.2实例class
Dut
extends
BlackBox
with
HasBlackBoxResource{
val
io=I0(
new
Bundle{val
a
=Input(UInt(32.W))val
clk=Input(Clock())val
reset=Input(Bool()val
b=Output(UInt(
4.W))addResource("/dut.v")/注意路径写成"./dut.v"是不对的。方法的入参是Verilog文件的相对地址,即相对src/main/resources的地址132.3复制方式二>chisel3.util包里还有一个特质HasBlackBoxPath如果在黑盒类里混入这个特质,并且在任意文件夹里有对应的Verilog
源文件,那么在Chisel转换
成Verilog
时,就会把Verilog
文件一起复制到目标文件
夹
。复
制Verilog
文
件142.4实例class
Dut
extendsBlackBox
with
HasBlackBoxPath{
val
io
=I0(
new
Bundle{val
a=Input(UInt(
32.W))val
clk=Input(Clock())val
reset=Input(Bool()val
b=
Output(UInt(4.W))addPathí
"./src/main/scala/dut.v")此时的路径是相对于chisel-template这个工程文件夹的路径,我们需要提供相对路径或者全路径。复
制Verilog
文
件15三、内联Verilog文件正安文是大XPANIIAOT
UNIVERSITY16目标文件夹里就会生成一个单独的Verilog文件,复制
内嵌的代码。该方法适合小型Verilog
设计!chisel3.util
包里有一个特质HasBlackBoxInline调用特质里的方法:setlnline
(blackBoxName:String,
blackBoxlnline:String)内
联Verilog
文
件3.1内联Verilog文件17内
联Verilog
文
件class
Dut
extends
BlackBox
with
HasBlackBoxInline{val
io=IO(
new
Bundle{val
a
=Input(UInt(
32.W))val
clk
=Input(Clock())val
reset
=Input(Bool())val
b
=Output(UInt(
4.W))setInline(
"dut.v"
,|module
dut(input
[31:0]a,input
clk,input
reset,output
[3:0]b);assign
b=b_temp;lendmodule""
.stripMargin)实
例
:字符串中的“|”
表示文件的边界四、inout端口正安文是大XPANIIAOT
UNIVERSITY19>Chisel
目前只支持在黑盒中引入Verilog的inout端口。Bundle中使用
“Analog
(位宽)”声明Analog
类型的端口编译Verilog
的inout
端口NOTE:
要用
“chisel3.experimental.”
进行导入。inout
端
口4.1
inout20class
Inout!CextendsBundle{vala=Analog(
16
.W)vaY
b=inpui(Uint(16.W))val
sel=Input(Bool())val
c=Output(UInt(
16.W))}class
InoutPort
extendsBlackBoxwithHasBlackBoxlnline{
val
io=IO(
newInoutIO)setlnline(
"InoutPort.v",|module
InoutPort(inout
[15:0]a,……output
[15:0]c);assign
a
=sel?'bz:b;lendmodule".stripMargin)class
Makelnout
extends
Module{val
io
=I0(
new
InoutIO)val
m=Module(
new
InoutPort)m.io
<>
io}
21实
例
:只能用于与黑盒连接,不能在Chis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年宁波鄞州区东吴镇人民政府编外人员招聘6人考试模拟卷附答案
- 2025广西贵港市金融投资发展集团有限公司招聘4人考前自测高频考点模拟试题附答案
- 2025安徽皖信人力资源管理有限公司招聘望江某电力外委人员1人(公共基础知识)测试题附答案
- 2026广西财经学院公开招聘教职人员72人笔试备考试题及答案解析
- 2026四川自贡医元健康管理有限责任公司招聘工作人员11人笔试参考题库及答案解析
- 迎新年庆元旦师生活动策划【演示文档课件】
- 资阳市雁江区审计局2026年公开招聘编外专业人员(2人)笔试备考题库及答案解析
- 2026山东省科创集团有限公司权属企业招聘5人笔试参考题库及答案解析
- 2026浙江宁波市北仑区港航管理中心招聘编外人员1人笔试备考题库及答案解析
- 2026中国铁建海洋产业技术研究院招聘28人笔试备考题库及答案解析
- 04S519小型排水构筑物1
- 2023年个税工资表
- 劳动者个人职业健康监护档案
- 2023新青年新机遇新职业发展趋势白皮书-人民数据研究院
- 《两角和与差的正弦、余弦、正切公式》示范公开课教学PPT课件【高中数学人教版】
- 管理学原理教材-大学适用
- 变电站一次侧设备温度在线监测系统设计
- GB/T 6579-2007实验室玻璃仪器热冲击和热冲击强度试验方法
- GB/T 16913.3-1997粉尘物性试验方法第3部分:堆积密度的测定自然堆积法
- GB/T 12621-2008管法兰用垫片应力松弛试验方法
- 重庆大学介绍课件
评论
0/150
提交评论