Verilog中信号发生器的代码实现

目录

描述

输入描述:

输出描述:


描述

题目描述:

请编写一个信号发生器模块,根据波形选择信号wave_choise发出相应的波形:wave_choice=0时,发出方波信号;wave_choice=1时,发出锯齿波信号;wave_choice=2时,发出三角波信号。

       模块的接口信号图如下:

输入描述:

clk:系统时钟信号

rst_n:异步复位信号,低电平有效

wave_choise:2比特位宽的信号,根据该信号的取值不同,输出不同的波形信号

输出描述:

wave:5比特位宽的信号,根据wave_choise的值,输出不同波形的信号

代码如下:

(CSDN代码块不支持Verilog,代码复制到notepad++编辑器中,语言选择Verilog,看得更清楚)

`timescale 1ns/1ns
module signal_generator(input clk,input rst_n,input [1:0] wave_choise,output reg [4:0]wave);reg [4:0] cnt;reg flag;// 方波模式下,计数器控制always@(posedge clk or negedge rst_n) beginif(~rst_n)cnt <= 0;elsecnt <= wave_choise!=0 ? 0:cnt        ==19? 0:cnt + 1;end// 三角波模式下,标志位控制always@(posedge clk or negedge rst_n) beginif(~rst_n)flag <= 0;elseflag <= wave_choise!=2 ? 0:wave       ==1 ? 1:wave       ==19? 0:flag;end// 更新wave信号always@(posedge clk or negedge rst_n) beginif(~rst_n) wave <= 0;else case(wave_choise)0      : wave <= cnt == 9? 20    : cnt ==19? 0     :wave;1      : wave <= wave==20? 0     : wave+1;2      : wave <= flag==0 ? wave-1: wave+1;default: wave <= 0;endcaseend
endmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/11466.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

完整的在Python中自定义异常的例子

下面是一个在Python中自定义异常的完整示例&#xff0c;包括定义异常、引发异常和捕获异常的过程&#xff1a; ### 定义自定义异常 首先&#xff0c;我们定义两个自定义异常类&#xff1a;ShapeError作为基类&#xff0c;用于所有形状相关错误的基类&#xff1b;InvalidShape…

网页版五子棋的自动化测试

目录 前言 一、主要技术 二、测试环境的准备部署 三、测试用例 四、执行测试 4.1、公共类设计 创建浏览器驱动对象 测试套件 释放驱动类 4.2、功能测试 登录页面 注册页面 游戏大厅页面 游戏房间页面 测试套件结果 4.3、界面测试 登录页面 注册页面 游戏大…

MoonBit 本周有重磅更新!枚举构造器支持可变字段、数组字面量默认构建 Vector

MoonBit更新 支持了构造器的 payload 中出现 mutable field&#xff0c;使用方式如下&#xff1a; enum E {C(mut ~x : Int, mut ~y : Int) } derive(Debug)fn swap_xy(x : E) -> Unit {match x {// ~y 会绑定模式匹配前 C 中的 y 字段的值// 当看到 C(..) as c 这种模式时…

visual sudio使用-创建空项目-创建cpp文件

新建空项目 新建cpp文件 #include <iostream> using namespace std;int main() {cout << "hello vs" << endl;cout << "hello c" << "\n";cout << "hello first day\n"; }

LeetCode416:分割等和子集

题目描述 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 解题思想 [1,5,11,5] 和为22&#xff0c;其中一半为 11。如果能寻找到若干数的和为11则成立可以抽象为一个0-1背包问题&#xff1a;容…

MATLAB绘制蒸汽压力和温度曲线

蒸汽压力与温度之间的具体关系公式一般采用安托因方程&#xff08;Antoine Equation&#xff09;&#xff0c;用于描述纯物质的蒸汽压与温度之间的关系。安托因方程的一般形式如下&#xff1a; [\log_{10} P A - \frac{B}{C T}] 其中&#xff0c; (P) 是蒸汽压&#xff08…

redis 和 memcache 有什么区别?

Redis和Memcache都是常用的内存数据存储系统&#xff0c;但它们之间存在一些显著的区别。以下是它们之间的一些主要差异&#xff1a; 数据支持类型&#xff1a; Memcache&#xff1a;基本只支持简单的key-value存储&#xff0c;不支持枚举&#xff0c;不支持持久化和复制等功能…

【刷题】一篇文章搞定“位运算”

只要春天不死&#xff0c;就有迎春的花朵年年岁岁开放&#xff0c;生命讲涅槃&#xff0c;生生不息&#xff0c;并会以另一种形式永存。 – 路遥 《平凡的世界》 (◦′ᆺ‵◦) ♬ ✧❥✧.•✧♡✧ ℒℴѵℯ ✧♡✧•.❥ (◦′ᆺ‵◦) ♬ ✧❥✧.•✧♡✧ ℒℴѵℯ ✧♡✧•.❥…

提Pr教程

提Pr教程 以提交到GitLab的kwin为例 打开kwin的仓库地址&#xff1a;invent.kde.org/plasma/kwin&#xff0c;注册自己的账号 fork一份仓库到自己名下 将fork的仓库克隆到本地&#xff0c;在其上做出修改并commit 需要本地先新建一个开发分支&#xff0c;并将这个开发分支关联…

NL6621 WIFI模块烧录及其他

某宝淘得NL6621: 测了一下引脚&#xff1a; 做了以下功课&#xff1a; 新岸线物联网NL6621解决方案是高性价比、完全开源、高成熟度的解决方案&#xff0c;特别为高数据吞吐率低成本的无线局域网产品而设计。它集成了MCU&#xff0c; MAC&#xff0c;1T1R基带和带功放RF收发机于…

数据结构的二叉树(c语言版)

一.二叉树的概念 1.二叉树的基本概念 二叉树是一种常见的树状数据结构&#xff0c;它由若干个节点组成&#xff0c;这些节点通过边连接起来。每个节点最多可以有两个子节点&#xff0c;分别称为左子节点和右子节点。 二叉树的特点是每个节点最多有两个子节点&#xff0c;而且…

Eplan2.9版本安装教程指南【附安装包】

文章目录 前言一、Eplan是什么&#xff1f;二、安装指南1、安装包获取2、安装步骤在这里插入图片描述 总结 前言 随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学习的基础内容。 提示&…

【报错合集】完美解决“虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本”

文章目录 解决方案&#xff1a;更改设置的硬件版本 今天我需要将别人的虚拟机克隆到我的VMware Workstation上运行&#xff0c;结果发生了以下的错误&#xff1a; 刚开始以为是VMware Workstation的版本问题太低导致的&#xff0c;所以我删除了原来的那个版本&#xff0c;下载…

开源分布式爬虫管理平台:性能强悍!!【送源码】

简介 基于 Golang 的分布式爬虫管理平台&#xff0c;支持 Python、NodeJS、Go、Java、PHP 等多种编程语言以及多种爬虫框架。 谁适合使用 Crawlab? 网路爬虫工程师&#xff1a; 通过集成爬虫程序到 Crawlab&#xff0c;网路爬虫工程师可以聚焦于爬虫的核心解析逻辑&#xff0…

[初学rust] 07_rust的函数

rust的函数 function rust 函数定义和其他语言类似&#xff0c;不过有一些细节需要注意。 函数返回值默认为最后1行的表达式&#xff0c;也可以用return&#xff0c;默认返回()确定不返回的&#xff0c;需要在函数名后面加上! fn <function_name>(parameter) -> r…

WCF 双工 回调模式

wcfInterface 项目 》》》wcf服务端提供的服务协议 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.ServiceModel; namespace wcfInterface {[ServiceContract(CallbackContract typeo…

【软考网络工程师】每日练题学知识

1.在EIGRP协议中&#xff0c;某个路由器收到了两条路径到达目标网络&#xff0c;路径1的带宽为100Mbps&#xff0c;延迟2ms&#xff0c;路径2的带宽为50Mbps&#xff0c;迟为4ms&#xff0c;如果EIGRP使用带宽和延迟的综合度量标准&#xff0c;那么该路由器选择的最佳路径是&am…

鸿蒙内核源码分析(工作模式篇) | CPU的七种工作模式

本篇说清楚CPU的工作模式 工作模式(Working mode) 也叫操作模式&#xff08;Operating mode&#xff09;又叫处理器模式&#xff08;Processor mode&#xff09;&#xff0c;是 CPU 运行的重要参数&#xff0c;决定着处理器的工作方式&#xff0c;比如如何裁决特权级别和报告异…

实时追踪维修进度,报修管理小程序让你省心又省力!

随着生活、工作节奏的日益加快&#xff0c;日常的售后报修、故障报修处理流程给我们带来种种困扰。我们都知道大多数企业、个人用户还在使用传统报修方式&#xff0c;如电话报修、纸质报修单等方式&#xff0c;不仅效率低下&#xff0c;而且难以追踪维修进度&#xff0c;给我们…

AI游戏外挂为何违法?

尊敬的读者们&#xff0c;大家好&#xff01;今天我想和大家探讨一个备受争议的话题——AI游戏外挂的合法性。近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;AI外挂逐渐成为游戏领域的一大毒瘤。那么&#xff0c;为什么AI游戏外挂会被视为违法行为呢&#xff1f;本…