自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (3)

原创 Verilog训练笔记(2)——数据降速增宽

数据降速增宽1.要求(1)对一路8bit信号进行1/2倍降速,并将8bit转换为16bit输出。(2)输出信号有效位在完成一次8bit转16bit时拉高,其余时间拉低(3)不使用FIFO IP核2.意义:(1)练习串并转换思想(2)练习数据降速、拓转位宽(3)练习简单跨时钟域问题处理3.总结:(1)串并转换思想用移位方法实现;(2)移位方法使用数据拼接更好(3)数据间因为打拍会有延迟,要调理一下时序(4)保持16bit数据维持两个时钟周期的方法是将需要输出的16bit数据打一拍,在

2020-08-22 09:30:33 37

原创 Verilog训练笔记(1)——非重叠序列检测

非重叠序列检测器1.要求:(1)检测非重叠的4位1101序列,当检测到一次该序列时o_en信号拉高一个时钟周期,o_cnt信号加一;(2)o_cnt信号最大值为7(3)当i_valid拉高时为信号到来的标志2.TestBench要求:(1)生成序列11101-101101-1011101(2)结果可以检测出3个1101非重叠序列3.模块接口:module sequencer(//System Signalinput clk, //系统时钟input rst_n, //系统

2020-08-21 17:43:50 33

原创 FPGA-VGA显示的贪吃蛇游戏开发记录——(1)蛇头模块

FPGA-VGA显示的贪吃蛇游戏开发记录蛇头模块代码Testbench考试复习期间看到别人用Python写了个贪吃蛇,突然想用FPGA实现一个贪吃蛇游戏机,用VGA接口显示在电脑屏幕上。无论最后能不能成功做成,都先试试看。记录每一个模块的开发思路和代码。蛇头模块需求:1、生成蛇头的初始坐标2、蛇头坐标根据蛇运动方向做改变思路:1、使用VGA-640480分辨率显示,以2020个像素为一格,所以xpos为1-32(640/20=32),ypos为1-24(480/24=20)。2、定义4个方

2020-06-21 15:43:59 106

原创 16位rgb2gray算法verilog移植

用三级流水线优化方法:整体扩大256倍,再右移8位verilog代码//==================local defines==================`define SIMmodule rgb2gray(//==================System signal================== input clk , input rst_n ,//==================Interface=============

2020-06-18 15:58:45 52

原创 基于FPGA的密码锁开发——(3)密码设置模块驱动
原力计划

*在第一篇密码锁驱动开发完之后,就可以构思密码设置驱动了需求如下:1、要准确输入6位密码,输入位数不足就判定密码设置失败2、只有在解锁状态下可以进行密码修改3、在密码设置完成后要通知到密码锁模块4、密码设置的输入设备仍然是键盘模块*构思完之后,模块接口大致如下:module password_set_dri( //================System Signal================ input clk , input rst_n

2020-05-19 19:35:14 132

原创 基于FPGA的密码锁开发——(2)定制化数码管显示模块驱动

这一篇记录定制化数码管显示模块的驱动开发数码管的原理再常见不过了,只不过数码管也分共阴极和共阳极的,这两种的写法是相反的为这个课题采购的数码管来源于淘宝Telsky旗舰店哈哈,我也算是他家老生意了...

2020-05-19 19:14:33 137

原创 基于FPGA的密码锁开发——(1)密码锁驱动
原力计划

最近在搞一个课程设计,题目很简单,用FPGA做一个密码锁。开发过程中遇到了一系列的错误,现在被一一解决。就通过写几篇博文来记录一下开发过程吧首先在构思框架时目标就很明确。整个系统至少要有这么几个模块:密码锁驱动、键盘驱动、数码管驱动;这是最最最基本的,在完成这几个模块后可以进行功能和外设的扩展。这一篇就记录密码锁的开发。首先,构建密码锁框架时,考虑到这么几个需求:1、密码锁需要与键盘构建接口,则需要有4位的数据接口和一个触发接口2、密码锁需要与数码管构建接口,这个设计默认密码位数是6位的,所以需要

2020-05-19 18:03:34 321

原创 FPGA的矩阵键盘驱动( 修正版)
原力计划

以前写的矩阵键盘的驱动是以单片机的思想来实现的,在FPGA上完全失败了,考虑的太简单了emmmmmm。所以在查了一些资料后,对过去写过的矩阵键盘驱动做个修正旧版本代码module keyboard_4_4( input clk, input rst, output reg[3:0] c_pin, input[3:0] r_pin, output reg[3:0] key_out); reg[15:0] div_cnt; reg[2:0] s

2020-05-18 21:22:59 153

原创 IIC协议的Verilog代码(1)——主机写模块开发

Verilog代码//Module Name:IIC Write//Author:Yang Cheng Yu//Date:2020/4/21//==================defines=====================`define SIMmodule iic_write( //================System Signal===============...

2020-04-21 14:57:56 462

原创 SPI主机的Verilog代码及验证(优化版)

这次重新写了一遍初学FPGA时写的SPI主机驱动,减少了代码量,舍弃了状态机,补充了同时发送和接受功能的验证代码//Module Name:SPI Master//Author:Yang Cheng Yu//Date:2020/4/20`define SIMmodule spi_master( //system signal input clk, input rst_...

2020-04-20 20:53:25 464

原创 LCD1602驱动开发记录 顶层模块开发(1)

说明书摘要指令集目前顶层开发到一半,只开发了写功能,读功能还未开发。另:目前指令逻辑直接在顶层中开发,代码写的比较草,状态机代码没有优化,因此顶层文件代码量超过了300行。。。。。后面可以将指令逻辑做个封装顶层Verilog代码//Name:Lcd_1602//Author:Yang_Cheng_Yu//Date:2020/4/18//==================defi...

2020-04-18 21:32:05 690

原创 LCD1602液晶屏的FPGA驱动(1)————读,写模块

说明书摘要LCD1602的读写时序很容易,只需在对应的时刻对RS,RW,E操作即可,DB数据总线保持对应的时间或在对应时间读取。Verilog代码LCD写模块//Name:Lcd_read_mod//Author:Yang_Cheng_Yu//Date:2020/4/18//==================defines=====================`defin...

2020-04-18 16:19:15 193

原创 两相编码器的FPGA驱动

两相编码器的驱动原理根据A,B相的相位差,即相位的领先或落后来判断编码器转轴旋转方向,根据编码器旋转产生的脉冲来计数。二、输出信号1、信号序列一般编码器输出信号除A、B两相(A、B两通道的信号序列相位差为90度)外,每转一圈还输出一个零位脉冲Z。当主轴以顺时针方向旋转时,按下图输出脉冲,A通道信号位于B通道之前;当主轴逆时针旋转时,A通道信号则位于B通道之后。从而由此判断主轴是正转还是...

2020-04-11 15:15:07 184

原创 US100超声波测距模块的FPGA驱动

一、说明书摘要驱动时序说明:串口模式的时序很简单,向US100发送一帧0x55的数据即为测距,发送0x50即为测温,测距US100会返回2帧8位数据,分两次发送回来,第一帧为距离高8位,第二帧是距离低8位。测温US100只返回一帧数据。Verilog代码串口发送模块//作者:杨成煜//日期:2020/4/7//`define SIMmodule uart_tx( //sys...

2020-04-07 20:55:04 228

原创 DHT11温湿度传感器的FPGA驱动代码

一、说明书主要内容1、产品概述2、接口说明串行接口:3、通讯过程从通讯时序可以看出,读取一帧传感器数据的时序为:主机将data线拉低至少18ms,然后拉高20-40us。然后主机释放data线给dht11,dht11将data线拉低80us作为响应信号,再拉高80us,若主机检测到正确的响应信号,读操作即可开始。读操作:dht11将data线拉低50us,然后拉高,如果这一位...

2020-04-06 20:38:32 638 4

原创 基于FPGA的数字钟 ——最终实现

我手里只有一块黑金的AX4010板子,板载的是Altera公司的Cyclone IV E系列 EP4CE10F17C8芯片。亲测成功,目前没发现bug自己敲代码也不容易啊,虽说工程很简单,但所有代码都是自己分析后再敲出来的,学生创作不易。麻烦转载时注明出处啦,感谢!功能:1.显示时间(s,min,h)2.3个按键可以以加的形式更改时间3.流水灯模块仅做装饰用,未写入所有用到的代码如下:...

2020-04-03 21:24:54 199

原创 双线性差值算法对图像旋转的优化

引言:上一篇博客实现了图像旋转并解决了图像显示不完整和像素点缺失的问题。这次通过双线性差值算法的应用对图像旋转的效果进行优化。一、双线性差值算法见我以前的博客链接:https://blog.csdn.net/qq_43650722/article/details/104072475二、本设计中的改善见我上一篇博客中的方案二链接:https://blog.csdn.net/qq_4...

2020-01-25 21:01:21 112 1

原创 MATLAB实现图像旋转

一、图像旋转的原理图像旋转的本质是向量的旋转。直接看图向量的旋转很容易理解,在图像旋转中,图像中心到某一像素点就可视作一向量,对该向量进行关于中点的旋转即可对该像素点进行旋转,对所有像素点进行旋转就完成了图像的旋转。方案一、正向直接旋转设原像素点P对应向量为K1,旋转后像素点P’对应向量为K2,旋转矩阵R为:则:可以得到K2=R∗K1K2=R*K1K2=R∗K1看下图,若相对整张图...

2020-01-23 22:15:41 423

原创 数字图像处理学习——(一)双线性差值算法

一、线性差值直接看图若已知图中两点A(x0,y0),B(x1,y1),和该直线上任意一点P的横坐标x,求P该直线上的一点的纵坐标。很容易可以得到,根据直线的定理。(y−y0)/(x−x0)=(y1−y0)/(x1−x0)(y-y0)/(x-x0)=(y1-y0)/(x1-x0)(y−y0)/(x−x0)=(y1−y0)/(x1−x0);得:y=(x1−x)/(x1−x0)y0+(x−x0...

2020-01-22 21:17:55 1419

原创 基于FPGA的VGA时序控制器

VGA时序VGA 显示器扫描方式从屏幕左上角一点开始,从左向右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间, CRT 对电子束进行消隐,每行结束时,用行同步信号进行同步; 当扫描完所有的行,形成一帧,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐, 开始下一帧。完成一行扫描的时间称为水平扫描时间,其倒数称为行频率;完成一帧(整屏)扫描的时间称为垂直扫描时...

2020-01-20 21:24:10 1556

原创 基于FPGA的数字钟(四)——时钟控制模块

一、需求分析时钟控制模块,需要生成秒,分,时三路信号,需要有外部信号能对其进行控制。按照正常时钟逻辑:秒满60归零;分在秒满60时进1,分满60归零;时在分满60时进1,时满24归零。外部控制方案选用键盘,因此需要引入按键消抖模块(见本人博客 基于FPGA的数字钟——(二)按键消抖模块设计)本文链接:https://blog.csdn.net/qq_43650722/article/...

2020-01-19 20:51:42 494 1

原创 Opencv学习(二)——读取图像信息

读取图像高度使用cv2.imread()函数可以读取图片的高,宽,通道数。奇异返回值的第一个值就是图像的高度。具体代码如下:import cv2 as cvimport numpy as npim=cv.imread('fruit.png')height=im.shape[0]cv.imshow('origin image',im)print(im.shape)print('h...

2020-01-18 21:35:19 3370 1

原创 Opencv学习(一)——图片的加载显示和保存

图片的加载与显示import cv2 as cvimport numpy as np'''cv2.imread()imread函数有两个参数,第一个参数是图片路径,第二个参数表示读取图片的形式,有三种:cv2.IMREAD_COLOR:加载彩色图片,这个是默认参数,可以直接写1。cv2.IMREAD_GRAYSCALE:以灰度模式加载图片,可以直接写0。cv2.IMREAD_UN...

2020-01-17 21:57:02 381 1

原创 基于FPGA的数字钟——(三)时钟显示模块(数码管)

基于FPGA的数字钟——(三)数码管显示模块硬件原理本设计中使用 6 个共阳数码管,可以显示 6 个数字(包含小数点) 。电路用 PNP管来反向驱动并且控制列扫描信号来选择哪个数码管。而且所有的 6 个数码管的“段选信号”(LEDA … LEDH)都共用驱动引脚(LED_A~LEDH)。数码管的所有驱动信号都是“低电平有效”。具体的原理图设计如下图所示:数码管扫描原理单个数码管可以采用静...

2020-01-16 20:35:23 3331

原创 4*4矩阵键盘的FPGA驱动

4*4矩阵键盘的FPGA驱动一、硬件原理4*4矩阵键盘有4行与4列,在按键按下时一行与一列即导通。其驱动方法非常简单。本设计中以一定的时间频率分别将每一行的引脚电平拉高,并在拉高某个引脚的同时检测每一列的电平变化,当检测到某列引脚有上升沿跳变时,即为该行与该列导通对应的那个按键被按下。例如上图中,拉高PD4,此时检测到PD2引脚有上升沿电平跳变,则按键S5被按下。其余同理。二、Veril...

2020-01-15 17:07:02 1005 4

原创 SPI主机实现

SPI主机实现一、硬件层(1)外部引线SPI通信的最小结构为一主一从结构,主机向从机提供信号发送接收时钟SCLK。主机与从机之间存有四根引线,即MOSI(主收从发)、MISO(主发从收)、SCK(通信时钟)、CS(从机片选信号)。其中,通过在主机上增加片选信号输出端的数目,或引入编码,译码结构可以使得主机控制更多的从机,实现一主多从的SPI通信。本设计中默认为一主一从最小结构。(2)四种工...

2020-01-14 16:55:26 460 2

原创 基于FPGA的数字钟——(二)按键消抖模块设计

基于FPGA的数字钟——(二)按键消抖模块1、硬件原理按键按下时会有随机的抖动,因此需要在抖动期过后再进行按键状态的判断。2、原理实现按键引脚检测电平跳变,跳变时进行计数,计数一定时间后再判断电平·高低以判断是抖动还是真实按下。检测按键放开同理。3、FPGA实现设计一个状态机,有以下几个状态:IDLE(放开),FILTER0(下降沿滤波),DOWN(按下),FILTER1(上升沿滤波)...

2020-01-02 17:49:17 728 3

原创 基于FPGA的数字钟——(一)串口通信模块

我的第一个FPGA项目——数字钟设计(一)串口通信模块设计1.串口通信协议UART通信的一帧一般由11到12位数据组成。1bit的起始位,检测为低电平表示数据开始传输;紧接着8bits的数据;然后是1bit的奇偶校验位,可以是奇校验或者偶校验;最后是1bit或2bits的停止位,必须为高电平,表示一个字符数据的传输结束。其中校验位是可选的,用来检验数据是否传输正确。如果有校验位,则需要保证...

2019-12-30 15:20:16 421

基于FPGA的数字钟开发

基于Altera Cyclone IV 系列FPGA开发的可设定时间的数字钟,利用开发板板载的数码管以及按键实现时间的显示和设定。

2020-04-04

基于FPGA的SPI主机实现

SPI是常用的板级通信协议,在FPGA板级通信中,许多重要的从器件都对SPI协议有所支持。因此,掌握SPI通信的FPGA片上实现对于FPGA工程开发具有重要的意义。本文设计了一个基于SPI模式0的主机通信控制器,系统性阐明了SPI设计的全流程。

2020-01-14

motor_speed_control.zip

基于STM32单片机的直流电机调速系统,调速原理为PWM脉冲宽度调制。使用矩阵键盘以及旋转编码器实现粗细分级速度的设定。

2019-12-06

空空如也

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