【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

相关文章

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

防止SpringBoot程序崩溃的几种方式汇总

《防止SpringBoot程序崩溃的几种方式汇总》本文总结了8种防止SpringBoot程序崩溃的方法,包括全局异常处理、try-catch、断路器、资源限制、监控、优雅停机、健康检查和数据库连接池配... 目录1. 全局异常处理2. 使用 try-catch 捕获异常3. 使用断路器4. 设置最大内存和线

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

将java程序打包成可执行文件的实现方式

《将java程序打包成可执行文件的实现方式》本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带... 目录1.问题提出2.如何将Java程序打包成可执行文件2.1将编译后的代码及jre运行环境一起打包2