北邮22级信通院数电:Verilog-FPGA(12)第十二周实验(2)彩虹呼吸灯(bug已解决 更新至3.0)

北邮22信通一枚~

跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章

持续关注作者 迎接数电实验学习~

获取更多文章,请访问专栏:

北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客

目录

一.代码部分

1.1一些更新和讲解

1.2改正后的代码

 二.管脚分配

三.实验效果


一.代码部分

1.1一些更新和讲解

12.03更新:

pwm……很抽象 原先版本的代码运行之后应该是亮白灯()我班大佬帮改了一下之后目前如下这个样子,,,,

逻辑都一样就是写法不同,,,不知道为啥就好使了,,,

还有佬能给解释一下不,,,

然后:借鉴的时候别忘了把我前面的注释删下去()

12.03更新2:

感谢评论区各位uu!!

明白原先是怎么错的了 例化的时候函数参数调用顺序错了

原先那么写也是可以的,,例化的时候调一下函数参数顺序就可以了

//完了C++知识是忘光了()

//12.03更新:我班大佬帮改出来了::
//原先的这段不行 但不知道为啥不行(
//借鉴的时候别忘了把这段删下去(
/*
module pwm
(input [7:0] duty,input clk,output reg out
);reg [7:0] buffer;always @ (posedge clk)begin buffer <= buffer + 1;if(buffer < duty)begin out <= 0;endelsebegin out <= 1;endend
endmodule
*/
/*
12.03更新2:
原pwm模块书写没有问题,例化的时候函数参数调用顺序出了问题
例化时应改为:pwm pwm_red(red,clk,red_buffer);
*/
// 模块定义: pwm
// 该模块实现一个简单的脉宽调制(PWM)发生器。
module pwm(out,duty,clk);input [7:0] duty;   // 输入,表示占空比,范围从0到255input clk;         // 输入,时钟信号用于同步output reg out;     // 输出信号,表示PWM波形reg [7:0] buffer;      // 8位寄存器,用于存储当前计数值always @ (posedge clk)begin buffer <= buffer + 1;// 在每个时钟上升沿递增缓冲区值if (buffer < duty)// 将缓冲区值与占空比进行比较:如果缓冲区小于占空比,则将输出设置为0;否则,设置为1。beginout <= 0;endelsebeginout <= 1;endend
endmodule	module rainbow_breathing_light(clk,red,green,blue);input clk;output red,green,blue;reg [15:0] wheel_position;reg [7:0] wheel_position_buffer;reg [7:0] red_buffer,green_buffer,blue_buffer;reg [31:0] divide_buffer;wire clk;reg divide_clk;pwm pwm_red(red,red_buffer,clk);pwm pwm_green(green,green_buffer,clk);pwm pwm_blue(blue,blue_buffer,clk);always @ (posedge clk)begin if(divide_buffer < 50000)begin divide_buffer <= divide_buffer + 1;endelsebegin divide_clk <= ~divide_clk;divide_buffer <= 0;endendalways @ (posedge divide_clk)begin if(wheel_position < 765)wheel_position <= wheel_position + 1;elsewheel_position <= 0;if(wheel_position < 255)begin red_buffer <= 255 - wheel_position;green_buffer <= 0;blue_buffer <= wheel_position;endelse if(wheel_position < 510)begin red_buffer <= 0;green_buffer <= wheel_position - 255;blue_buffer <= 255 - (wheel_position - 255);endelsebeginred_buffer <= wheel_position - 510;green_buffer <= 255 - (wheel_position - 510);blue_buffer <= 0;endend
endmodule

1.2改正后的代码

将模块定义(类比C++函数接口定义)中的形参顺序改动:

rainbow_breathing_light.v

// 模块定义: pwm
// 该模块实现一个简单的脉宽调制(PWM)发生器。
module pwm(out,duty,clk);input [7:0] duty;   // 输入,表示占空比,范围从0到255input clk;         // 输入,时钟信号用于同步output reg out;     // 输出信号,表示PWM波形reg [7:0] buffer;      // 8位寄存器,用于存储当前计数值always @ (posedge clk)begin buffer <= buffer + 1;// 在每个时钟上升沿递增缓冲区值if (buffer < duty)// 将缓冲区值与占空比进行比较:如果缓冲区小于占空比,则将输出设置为0;否则,设置为1。beginout <= 0;endelsebeginout <= 1;endend
endmodule	module rainbow_breathing_light(clk,red,green,blue);input clk;output red,green,blue;reg [15:0] wheel_position;reg [7:0] wheel_position_buffer;reg [7:0] red_buffer,green_buffer,blue_buffer;reg [31:0] divide_buffer;wire clk;reg divide_clk;pwm pwm_red(red,red_buffer,clk);pwm pwm_green(green,green_buffer,clk);pwm pwm_blue(blue,blue_buffer,clk);always @ (posedge clk)begin if(divide_buffer < 50000)begin divide_buffer <= divide_buffer + 1;endelsebegin divide_clk <= ~divide_clk;divide_buffer <= 0;endendalways @ (posedge divide_clk)begin if(wheel_position < 765)wheel_position <= wheel_position + 1;elsewheel_position <= 0;if(wheel_position < 255)begin red_buffer <= 255 - wheel_position;green_buffer <= 0;blue_buffer <= wheel_position;endelse if(wheel_position < 510)begin red_buffer <= 0;green_buffer <= wheel_position - 255;blue_buffer <= 255 - (wheel_position - 255);endelsebeginred_buffer <= wheel_position - 510;green_buffer <= 255 - (wheel_position - 510);blue_buffer <= 0;endend
endmodule

 二.管脚分配

三.实验效果

彩虹呼吸灯。 

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

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

相关文章

解密HubSpot CMS Hub:构建引人入胜的企业网站!

在数字化时代&#xff0c;网站是企业与客户互动的重要窗口。为了在竞争激烈的市场中脱颖而出&#xff0c;企业需要一个现代化、用户友好且高度可定制的网站。而HubSpot CMS Hub作为一款领先的内容管理系统&#xff0c;为企业提供了独特的优势&#xff0c;让网站建设变得更加轻松…

Private Set Intersection from Pseudorandom CorrelationGenerators 最快PSI!导览解读

目录 一、概述 二、相关介绍 三、性能对比 四、技术细节 1.KKRT 2.Pseudorandom Correlation Generators 3.A New sVOLE-Based BaRK-OPRF 4.BaRK-OPRF 五、总结 参考文献 一、概述 这篇文章的主要脉络和核心思想是探讨如何利用伪随机相关生成器&#xff08;PCG&#…

【AI】以大厂PaaS为例,看人工智能技术方案服务能力的方向(2/2)

目录 三、解决方案 3.1 人脸身份验证 3.2 图像审核&#xff08;暴恐、色情等&#xff09; 3.3 人脸会场签到 3.4 机器人视觉 3.5 视频审核 3.6 电商图文详情生成 3.7 智能客服 接上回&#xff1a; 【AI】以大厂PaaS为例&#xff0c;看人工智能技术方案服务能力的方向&…

Mybatis实用教程之XML实现动态sql

系列文章目录 1、mybatis简介及数据库连接池 2、mybatis中selectOne的使用 3、mybatis简单使用 4、mybatis中resultMap结果集的使用 Mybatis实用教程之XML实现动态sql 系列文章目录前言1. 动态条件查询2. 动态更新语句3. 动态插入语句4、其他标签的使用 前言 当编写 MyBatis 中…

力扣labuladong——一刷day67

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣582.杀掉进程二、力扣536.从字符串生成二叉树 前言 二叉树的递归分为「遍历」和「分解问题」两种思维模式&#xff0c;这道题需要用到「遍历」的思维模…

麒麟系统进入救援模式或者是crtl D界面排查方法

如出现以下图片的情况可能需要修复磁盘&#xff1a; V10GFB-desktop&#xff1a; 开机后发现一致卡在此界面&#xff1a; 按esc键后有以下报错信息说明在/etc/fstab里面编写的外挂磁盘的命令有问题 解决方法如下&#xff1a;进入单用户模式对/etc/fstab进行修改&#xff1a; …

springboot-mongodb-连接配置

文章目录 配置Maven依赖URL格式单节点配置示例副本集&#xff08;含连接池配置&#xff09; 配置Maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependenc…

智能优化算法应用:基于侏儒猫鼬算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于侏儒猫鼬算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于侏儒猫鼬算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.侏儒猫鼬算法4.实验参数设定5.算法结果6.参考…

facebook广告运营技巧

在Facebook上进行广告运营需要一定的技巧和策略。以下是一些建议&#xff1a; 明确目标&#xff1a;在创建广告之前&#xff0c;你需要明确你的目标。这可能包括增加品牌知名度、提高网站流量、增加销售等等。明确目标后&#xff0c;你可以将广告与这些目标相结合&#xff0c;…

【五分钟】熟悉python列表和元组的异同点【看这篇够用!建议收藏】

引言 Python&#xff0c;是一种广泛应用于数据科学、机器学习等领域的高级编程语言&#xff0c;支持多种丰富多样的数据类型&#xff0c;其中包括列表和元组。尽管这两种数据结构都可用于存储多个值&#xff0c;但它们在功能和特性上存在着明显的差异。在接下来的博客中&#…

天津大数据培训机构品牌 数据分析师的发展方向

大数据专业还是有一定难度的&#xff0c;毕竟大数据开发技术所包含的编程技术知识是比较杂且多的如果是计算机专业的学生或者自身有一定基础的人学&#xff0c;相对来说会比较容易&#xff0c;但对于零基础小伙伴学习来说&#xff0c;想要学习大数据&#xff0c;难度还是很高的…

3D Web可视化平台助力Aras开发PLM系统:提供数据访问、可视化和发布功能

HOOPS中文网慧都科技是HOOPS全套产品中国地区指定授权经销商&#xff0c;提供3D软件开发工具HOOPS售卖、试用、中文试用指导服务、中文技术支持。http://techsoft3d.evget.com/ Aras是一个面向数字化工业应用的开放性平台&#xff0c;帮助世界领先的复杂互联产品制造商转变其产…

大三上实训内容

项目一&#xff1a;爬取天气预报数据 【内容】 在中国天气网(http://www.weather.com.cn)中输入城市的名称&#xff0c;例如输入信阳&#xff0c;进入http://www.weather.com.cn/weather1d/101180601.shtml#input 的网页显示信阳的天气预报&#xff0c;其中101180601是信阳的…

SpringCloud面试题——Nacos

一&#xff1a;什么是Nacos&#xff1f; 二&#xff1a;服务心跳与服务注册原理&#xff1f; 在spring容器启动的时候&#xff0c;nacos客户端会进行两步操作。 向nacos服务端发送心跳向nacos服务端注册当前服务 服务心跳 客户端在启动的时候&#xff0c;会开启一个心跳线程…

私域运营:掌控用户,领航变革

随着互联网技术的迅速进步&#xff0c;众多电商平台如雨后春笋般涌现。尽管淘宝、京东等第三方平台在流量和销售额方面占据了绝对优势&#xff0c;但私域流量运营的兴起也引发了广泛关注。尽管尚处于初级阶段&#xff0c;但私域运营已成为当前最热门的话题之一。 私域运营指的…

HttpComponents: 概述

文章目录 1. 概述2. 生态位 1. 概述 早期的Java想要实现HTTP客户端需要借助URL/URLConnection或者自己手动从Socket开始编码&#xff0c;需要处理大量HTTP协议的具体细节&#xff0c;不但繁琐还容易出错。 Apache Commons HttpClient的诞生就是为了解决这个问题&#xff0c;它…

高德地图画渐变线

高德地图画渐变线&#xff0c;思路是将线和颜色均分为多个小线段和小颜色&#xff0c;实现渐变&#xff0c;类似于下图。 如果需要多段线&#xff0c;自己循环拼一下就可以了&#xff0c;方法返回多个小线段组成的polyline数组。 /** 高德地图画渐变线* author: liyun* params…

【WPS】Excel表格数据透视表

数据少量还好&#xff0c;如果输数多起来就麻烦了&#xff0c;最近需要汇报一个情况。 描述 譬如&#xff1a;开发&#xff08;80.00%->91.16%&#xff09;&#xff1a;共计43项&#xff08;本周新增1项&#xff09;&#xff0c;本周新增已完成2项&#xff0c;共已完成36项…

wps中将横轴和纵轴数据互换

wps中将横轴和纵轴数据互换 今天遇到个比较奇怪的需求, 要把excel数据的横轴和纵轴互换 在我理解中程序做这种事情应该很简单的 结果搜索好多教程都是说怎么讲图表xy轴互换 终于找到如何转表格数据的特此记录一下 复制需要转换的内容新建一个sheet选择性粘贴(CtrlAltV)选择转置…

Linux高级系统编程 - 5 管道

复制文件描述符 dup函数 作用 : 文件描述符复制 语法 #include <unistd.h> int dup(int oldfd); 参数 : 所需复制的文件描述符 返回值 复制得到的文件描述符 功能 : 从文件描述符表中 , 寻找一个最小可能的文件描述符&#xff08;通过返回值返回&#xff09;作为…