北邮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;看人工智能技术方案服务能力的方向&…

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

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

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

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

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

大数据专业还是有一定难度的&#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是信阳的…

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项…

RHEL8_Linux访问NFS存储及自动挂载

本章主要介绍NFS客户端的使用 创建FNS服务器并通过NFS共享一个目录在客户端上访问NFS共享的目录自动挂载的配置和使用 1.访问NFS存储 前面介绍了本地存储&#xff0c;本章就来介绍如何使用网络上的存储设备。NFS即网络文件系统&#xff0c;所实现的是 Linux 和 Linux 之间的共…

新手搭建知识付费平台必备攻略:如何以低成本实现高转化?

我有才知识付费平台 一、引言 随着知识经济的崛起&#xff0c;越来越多的知识提供者希望搭建自己的知识付费平台。然而&#xff0c;对于新手来说&#xff0c;如何以低成本、高效率地实现这一目标&#xff0c;同时满足自身需求并提高客户转化率&#xff0c;是一大挑战。本文将…

SPA, SEO, SSR总结

SPA单页面Web应用 SPA(Single page web application) 单页面Web应用 Web不再是一张张页面,而是一个整体的应用,一个由路由系统,数据系统,页面(组件)系统等等,组成的应用程序, 让用户不需要每次与服务器进行页面刷新来获得新的内容, 从而提供了更快,跟流畅的用户体验, 在SPA中…

参与创作①周年啦~

写在前面 今天看了消息才知道&#xff0c;原来开始创作已经一年了。此篇无干货&#xff0c;纯白话&#xff0c;纯记录。 机缘 参与CSDN创作已经一年有余&#xff0c;犹记得第一篇博文是为了整理好所学内容&#xff0c;方便自己复习。没想到后面也陆陆续续发了些其他内容&…

12.8作业

1.头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> #include <QMovie>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nul…

spring-boot-starter-validation是什么Validation参数校验使用概要

spring-boot-starter-validation是什么&Validation参数校验使用概要 来源Valid和Validated的用法(区别)引入依赖Valid和Validated的用法 在日常的项目开发中&#xff0c;为了防止非法参数对业务造成的影响&#xff0c;需要对接口的参数做合法性校验&#xff0c;例如在创建用…

系统设计-微服务架构

典型的微服务架构图 下图展示了一个典型的微服务架构。 负载均衡器&#xff1a;它将传入流量分配到多个后端服务。CDN&#xff08;内容交付网络&#xff09;&#xff1a;CDN 是一组地理上分布的服务器&#xff0c;用于保存静态内容以实现更快的交付。客户端首先在 CDN 中查找内…

临床骨科常用的肩关节疾病量表,医生必备!

根据骨科医生的量表使用情况&#xff0c;常笑医学整理了临床骨科常用的肩关节疾病量表&#xff0c;为大家分享临床常见的肩关节疾病量表评估内容&#xff0c;均支持量表下载和在线使用&#xff0c;建议收藏&#xff01; 1.臂、肩、手功能障碍&#xff08;disabilites of the ar…

flstudio21破解汉化版2024最新水果编曲使用教程

​ 如果你一直梦想制作自己的音乐(无论是作为一名制作人还是艺术家)&#xff0c;你可能会想你出生在这个时代是你的幸运星。这个水果圈工作室和上一版之间的改进水平确实令人钦佩。这仅仅是FL Studio 21所提供的皮毛。你的音乐项目的选择真的会让你大吃一惊。你以前从未有过这…