自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 05. 基于Verilog的呼吸灯程序设计

学习了点亮LED、LED闪烁、LED跑马灯和LED呼吸灯这样多种模式LED效果,思考如何将这些不同的效果在一个工程里全部实现,并利用DIP开关选择不同的运行模式,呈现不同的效果。一个基于Verilog的呼吸灯程序示例,该程序通过PWM(脉冲宽度调制)技术来模拟呼吸灯的效果,逐渐变亮再逐渐变暗的LED灯,给人一种灯光在“呼吸”的感觉。PWM(脉冲宽度调制):通过改变输出信号的占空比来模拟不同亮度的LED灯。呼吸灯亮度变化:呼吸灯的亮度变化通过改变占空比的值来模拟。

2024-05-05 20:08:13 702

原创 04_led_water_flow_v0 流水灯

流水灯是一种灯效模式,LED灯在一定的时间间隔内依次点亮或熄灭,形成像水流一样的效果。而跑马灯则是LED灯在一定的时间间隔内依次从左向右或从右向左依次点亮或熄灭,形成像跑马一样的效果,每个时刻只有一个灯亮,其他灯都熄灭。流水灯和跑马灯都是一种常见的LED灯效,它们在灯光的变化方式上有所不同。了解呼吸灯的效果,思考如何用Verilog设计实现。使用dip开关控制跑马灯的速度和方向。

2024-05-05 12:01:22 568

原创 03_led_horse_run_v1 跑马灯

跑马灯是一种常见的电子显示方式,它通过控制多个LED灯的顺序点亮,形成一种动态的视觉效果,看起来就像灯在“跑”一样。在Verilog中实现跑马灯通常涉及到使用一个计数器来控制LED灯的亮灭顺序。使用dip开关控制跑马灯的速度和方向。

2024-05-05 11:20:36 543

原创 03_led_horse_run_v0 跑马灯

Verilog实现跑马灯,通过控制多个LED灯的顺序点亮,形成一种动态的视觉效果,看起来就像灯在“跑”一样。

2024-05-05 11:19:27 482

原创 02.3 基于Verilog控制多个LED灯以不同频率闪烁

使用一个特定位宽的count变量控制多个LED的速度,与之前版本不同,本例代码中,6个led可以以不同的速度闪烁,呈现更丰富的效果,为后续跑马灯,流水灯和呼吸灯做准备,同学们要重点理解变量位宽的概念和位宽的确定方法。本段代码是为Verilog初学者提供的一个名为led_blink简单实例Verilog模块,其功能是控制6个LED灯同步闪烁,每秒钟闪烁一次。使用Verilog的位拼接语法,组合各个led不同的闪烁速度。

2024-04-28 16:21:53 450

原创 02.2 基于Verilog控制LED以不同频率闪烁

本段代码是为Verilog初学者提供的一个名为led_blink简单实例Verilog模块,其功能是控制6个LED灯同步闪烁,每秒钟闪烁一次。使用模块级parameter关键词定义一些常量,模块级参数可以在例化模块的时候给出具体值,参数化模块使得代码更具灵活,提高可复用性。在模块接口的output接口使用reg型变量,因此代码中不再需要。使用唯一的三目运算符(?:)处理组合逻辑的多路分支。增加一组dip控制引脚,用于控制LED闪烁的速度;这样的代码,代码更简洁。

2024-04-28 16:06:54 469

原创 02.1 基于Verilog控制LED灯闪烁,使用Parameter增强可维护性和可读性

版本相比,本例使用parameter关键词定义一些常量,使得代码更具可读性,增强可维护性。Verilog模块中的parameter类似于C语言的const常量。本段代码是为Verilog初学者提供的一个名为led_blink简单实例Verilog模块,其功能是控制6个LED灯同步闪烁,每秒钟闪烁一次。版本相比,本例在模块接口的output接口使用reg型变量,因此代码中不再需要。这样的代码,代码更简洁。

2024-04-28 15:47:02 300

原创 02.0 基于Verilog控制LED灯每秒钟闪烁一次

本例代码用于理解时序逻辑的概念,理解多个always模块完全并行执行的概念,讲授时可以与C语言的执行过程进行比对,特别是分支结构与C语言形式上非常相似。本段代码是为Verilog初学者提供的一个名为led_blink简单实例Verilog模块,其功能是控制6个LED灯同步闪烁,每秒钟闪烁一次。

2024-04-28 15:36:43 459 1

原创 【0基础学会Verilog】007. Verilog实现类似C语言的循环结构

Verilog语言实现C语言函数的循环结构

2023-06-17 17:06:38 686

原创 【0基础学会Verilog】006. Verilog语言的多分支选择结构

本篇博文介绍如何将``C语言``的**多分支选择结构**转换为``Verilog``硬件模块。我们知道,``C语言``的选择结构有两种形式,``if-else``结构和``switch-case``结构。一般``if-else``结构实现双分支,而``switch-case``结构可以简洁地表达多分支结构。本博文讨论多分支选择结构的实现方法。本文分别用**组合逻辑**和**时序逻辑**两种方法实现,方便大家进一步理解组合逻辑和时序逻辑的区别与联系。

2023-06-14 20:29:38 381

原创 【0基础学会Verilog】005. Verilog语言的选择结构

前面的博文我们已经学会如何将一个简单的多项式计算的C语言函数转换为具有相同功能的Verilog的模块,并为其编写相应的测试模块,即所谓testbench对其进行仿真,通过对其波形的检查可以验证模块的功能是否与C语言函数的功能相同,也就是确保功能的正确性。本篇博文介绍如何将C语言的选择结构转换为Verilog硬件模块。我们知道,C语言的选择结构有两种形式,if-else结构和结构。一般if-else结构实现双分支,而结构可以简洁地表达多分支结构。

2023-06-13 17:03:13 234

原创 【0基础学会Verilog】004. 学会使用Vivado自带仿真器

【0基础学会Verilog】学会使用Vivado自带仿真器编写好实现指定功能的Verilog模块后,需要对其进行仿真已验证设计的正确性,这需要用到EDA开发工具的仿真器,我们选择Xilinx公司的Vivado自带的仿真工具进行仿真。

2023-06-12 20:46:12 3195

原创 【0基础学会Verilog】003. 为Verilog模块编写测试模块testbench

完成了C语言函数(function)或Verilog功能模块(module)的编写,接下来我们需要对其进行测试、仿真等手段来验证函数或模块的正确性。本篇博文介绍为一个给定的Verilog模块编写仿真模块,也就是所谓testbench的方法。我们为上一篇博文所述的以及calc_reg()两种类型的模块编写相关。

2023-06-07 22:46:02 1215

原创 11. 应用C++类的继承性和多态性提高代码复用度

上一篇博文介绍了如何组合CBmp类和三个缩放算法类,用一个简单的函数完成所需的操作,达到减少GUI界面代码和核心代码耦合度的目的,本篇继续介绍利用C++类的继承性特性提高C++代码的复用度。分析三个不同的缩放算法的操作,其实除了源图像点的权值的方法不一样外,其他步骤包括依据目标点坐标求取源图像的相关点,行缩放row_scale、列缩放和整帧缩放其实本质上都是一样的。其中求取源图像的相关点可以将所有算法的点数均扩展为如果双三次插值三次所需的4个源图像点,其他两种两种算法不需要用到的点的权值设为0即可。

2023-06-04 18:33:25 277

原创 【0基础学会Verilog】002. Verilog时序逻辑实现C语言函数

我们用Verilog语言实现与C语言函数相同功能的一个模块,以此为例给大家揭开了FPGA设计的重要工具–硬件描述语言Verilog的神秘面纱。只要你有一定的C语言基础,大致理解上面的示例代码是不太困难的。Verilog在语法上源于C语言,借鉴了很多C语言的做法。但本质上,由于Verilog面向的是资源需求相对紧张的硬件模块设计,所以也有很多不同的地方。特别强调VerilogVerilog用关键词module和endmodule表示模块结构;Verilog用精准的位宽形式声明变量以便节省硬件资源,类似。

2023-05-28 17:17:17 339

原创 【0基础学会Verilog】001. C语言函数到Verilog模块

我们用Verilog语言实现与C语言函数相同功能的一个模块,以此为例给大家揭开了FPGA设计的重要工具–硬件描述语言Verilog的神秘面纱。只要你有一定的C语言基础,大致理解上面的示例代码是不太困难的。特别强调Verilog用关键词module和endmodule表示模块结构;用精准的位宽形式声明变量以便节省硬件资源,类似表示声明一个8比特位宽的wire型变量dat;使用assign对wire型变量赋值,形如表示将a+b的结果值赋给变量dat;模块的输入和输出参数都有明确的方向,input。

2023-05-27 15:30:14 1143 1

原创 04. 基于MFC的数字图像处理基础框架

本文搭建一个基于MFC的图像显示平台,供同学们在学习数字图像处理的时候应用纯C++编写代码验证各类图像处理算法,以区别于其他使用高层图像处理库的平台。博文介绍了如何利用MFC框架读取和显示BMP图像的问题,在此基础上,本文用一个图像取反算法来演示如何编写C++代码编写数字图像算法并立即展示效果。首先,我们新建一个名为的MFC单文档工程,具体方法参见之前的博文。仿照博文博文添加CBmp类。接下来我们继续添加一个方便添加数字图像处理算法的类,系统为我们添加两个文件和。

2023-05-23 22:24:48 696

原创 基于MFC框架的数字图像处理算法示例

本专栏搭建一个基于MFC的图像显示平台,供同学们在学习数字图像处理的时候应用纯C++编写代码验证各类图像处理算法,以区别于其他使用高层图像处理库的平台。这里是本专栏的目录,具体的链接会不断更新。

2023-05-23 21:52:04 353 1

原创 10. 减少GUI界面代码和核心代码耦合度

本博文内容是博文的一部分(博文提到,在点击鼠标进行绘制操作的时候我们需要比较多的步骤完成,包括读取BMP、分离RGB通道,分别缩放RGB三个通道,最后组合三个通道进行绘制等过程。基于GUI界面代码和核心代码尽可能低耦合的原则,新建一个CBmpScale类,将上述过程整合,并在CView内调用,用非常简明的代码完成图像的缩放和绘制。直接上代码吧,新建一个CBmpScale类,文件名为和。将将。

2023-05-21 11:25:22 147

原创 09. 基于MFC实现双三次插值图像缩放算法

本博文内容是博文的一部分(本博文介绍算法的实现。

2023-05-21 10:27:02 334 1

原创 【0基础学会Verilog】开启FPGA设计之路

相关教程,包括Verilog的学习教程,FPGA设计基础,FPGA设计案例分析等,希望能帮到大家,学习本教程不需要太多的硬件知识,用到的时候我会加以解释。如果有一点C语言的基础最好,没有也关系不大。芯片设计、验证的重要工具之一。另外,在国防、通信等领域FPGA直接作为产品应用也很广泛。可以预期,在接下来的几十年内,社会对。(Field Programmable Gate Array,现场可编程门阵列)作为万能的硬件设计工具,是。这些条件将大多数有心投入该行业的同学挡在的大门之外。】的目录,以后会不断更新。

2023-05-17 22:24:50 270 1

原创 07. 基于MFC实现双线性插值图像缩放算法

本博文内容是博文的一部分(博文实现了最简单的最近邻算法,本文在此基础上添加双线性插值缩放算法的实现。*双线性插值算法(Bilinear Interpolation)*原理如下图所示。所谓,即在两个方向分别进行一次线性插值,通过四个相邻像素插值得到待求像素,距离越近的像素贡献越大。:已知c00,c10,c01,c11为原图中的四邻像素,c点为待求像素。:双线性插值分两步实现。

2023-05-15 21:41:23 521

原创 05. 基于MFC实现最近邻图像缩放算法

本博文内容是博文的一部分(博文引入C++类的概念,将所用BMP处理相关的代码,包括读取BMP,分离R,G,B通道和绘制BMP等用一个CBmp类进行封装,实现了对BMP图像的读取,分离和绘制的功能。接下来我们介绍图像缩放算法的实现,并用BMP展示。经典的图像缩放算法有最近邻算法、双线性算法和双三次算法三类,依次复杂度增加,缩放效果也依次改善。本博文系列为逐个介绍这三种算法。本文实现最简单的最近邻算法。

2023-05-13 23:11:12 504

原创 03. 用C++类和对象封装BMP显示的相关代码

本博文引入C++类的概念,将BMP处理相关的代码,包括读取BMP,分离R,G,B通道和绘制BMP等用一个CBmp类进行封装,方便在其他地方调用。

2023-05-13 10:24:28 746

原创 02. 基于MFC读取并显示一幅BMP图像

本博文内容是博文的一部分(上一篇博文介绍了如何基于Visual Studio的MFC框架搭建一个单文档的GUI程序,并在消息响应函数OnDraw()利用系统提供的绘图工具CDC* pDC绘制一个彩色正方形。本篇在此基础上介绍有关BMP格式图像的相关内容,编写C++函数读取并在屏幕上显示一个BMP图像,为后续介绍图像缩放算法打下基础。

2023-05-11 16:57:02 3621 2

原创 01. 基于MFC绘制一个彩色正方形

MFC单文档程序结构主要涉及四个核心类的对象,每个类的源码由一个类的头文件*.h和对应类的实现文件*.cpp组成。(1)应用程序类CApp:负责处理消息,将收到的消息分发给相应的对象,是应用程序的最顶层模块。(下图右侧的MFC_SD_01.h和MFC_SD_01.cpp)(2)主框架类CMainFrame:是视图CView的父窗口,视图CView类的对象就显示在CMainFrame类对象的客户区中。(下图右侧的MainFrm.h和MainFrm.cpp)

2023-05-10 22:28:42 2712 3

原创 基于MFC框架的图像缩放算法示例

有序列表,输入数字,加一个句点,然后空格即可;可以缩进空置多级列表;第一个代码例子,用C++写一个helloworld程序。下面是一个FPGA相关的Verilog模块的示例。这里编写博客正文,字体不能设置。无序列表,输入 - ,然后空格。

2023-05-02 19:50:59 600

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除