【chisel】如何用chisel写一个上升沿检测程序

2024-05-13 15:52
文章标签 程序 检测 上升 chisel

本文主要是介绍【chisel】如何用chisel写一个上升沿检测程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自定义上升沿检测

class RisingEdgeDetector extends Module {val io = IO(new Bundle {val inSig = Input(Bool())val outSig = Output(Bool())val clock = Input(Clock())})// 定义 risingedge 函数def risingedge(x: Bool): Bool = x && !RegNext(x)// 使用 risingedge 函数检测上升沿io.outSig := risingedge(io.inSig)// Chisel 会为 RegNext 自动生成一个寄存器来保存 inSig 的值// 并在下一个时钟周期提供这个值
}

实现主程序

package helloimport chisel3.{Clock, _}
class RisingEdgeDetector extends Module {val io = IO(new Bundle {val inSig = Input(Bool())val outSig = Output(Bool())})// 定义 risingedge 函数def risingedge(x: Bool): Bool = x && !RegNext(x)// 使用 risingedge 函数检测上升沿io.outSig := risingedge(io.inSig)// Chisel 会为 RegNext 自动生成一个寄存器来保存 inSig 的值// 并在下一个时钟周期提供这个值
}class risingedge extends Module {val io = IO(new Bundle {val detectedRisingEdge  = Output(Bool()) // IO names will be the sameval someBoolSignal  = Input(Bool())  // (without 'io_' in prefix)})// 创建 RisingEdgeDetector 模块的实例val detector = Module(new RisingEdgeDetector)// 连接输入和输出detector.io.inSig := io.someBoolSignal // 这里的 someBoolSignal 应该是你的设计中的一个 Bool 类型的信号io.detectedRisingEdge := detector.io.outSig // 这将是一个 Bool 类型的信号,表示上升沿的检测结果
}
object risingedgeMain extends App {(new chisel3.stage.ChiselStage).emitVerilog(new risingedge(), Array("--target-dir", "generated"))
}

运行以上chisel,生成Verilog如下

module RisingEdgeDetector(input   clock,input   io_inSig,output  io_outSig
);reg  _T; // @[risingedge.scala 11:48]wire  _T_1 = ~_T; // @[risingedge.scala 11:40]assign io_outSig = io_inSig & _T_1; // @[risingedge.scala 14:13]always @(posedge clock) begin_T <= io_inSig;end
endmodulemodule risingedge(input   clock,input   reset,output  io_detectedRisingEdge,input   io_someBoolSignal
);wire  detector_clock; // @[risingedge.scala 26:24]wire  detector_io_inSig; // @[risingedge.scala 26:24]wire  detector_io_outSig; // @[risingedge.scala 26:24]RisingEdgeDetector detector ( // @[risingedge.scala 26:24].clock(detector_clock),.io_inSig(detector_io_inSig),.io_outSig(detector_io_outSig));assign io_detectedRisingEdge = detector_io_outSig; // @[risingedge.scala 29:25]assign detector_clock = clock;assign detector_io_inSig = io_someBoolSignal; // @[risingedge.scala 28:21]
endmodule

这篇关于【chisel】如何用chisel写一个上升沿检测程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/986151

相关文章

Django调用外部Python程序的完整项目实战

《Django调用外部Python程序的完整项目实战》Django是一个强大的PythonWeb框架,它的设计理念简洁优雅,:本文主要介绍Django调用外部Python程序的完整项目实战,文中通... 目录一、为什么 Django 需要调用外部 python 程序二、三种常见的调用方式方式 1:直接 im

Mysql 驱动程序的程序小结

《Mysql驱动程序的程序小结》MySQL驱动程序是连接应用程序与MySQL数据库的重要组件,根据不同的编程语言和应用场景,MySQL提供了多种驱动程序,下面就来详细的了解一下驱动程序,感兴趣的可以... 目录一、mysql 驱动程序的概念二、常见的 MySQL 驱动程序1. MySQL Connector

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序