
FPGA
石小舟
这个作者很懒,什么都没留下…
展开
-
FPGA的学习:基于SPI协议的Flash驱动写操作控制
111原创 2021-06-19 14:36:22 · 914 阅读 · 0 评论 -
FPGA的学习:FIFO求和实验
111原创 2021-06-19 14:35:47 · 871 阅读 · 0 评论 -
FPGA的学习:TFT_LCD液晶屏字符显示
111原创 2021-06-19 14:18:19 · 3594 阅读 · 0 评论 -
FPGA的学习:HDMI显示器驱动设计与验证
111原创 2021-06-18 18:41:39 · 1265 阅读 · 0 评论 -
FPGA的学习:基于RS232的VGA图像处理
111原创 2021-06-15 15:55:59 · 621 阅读 · 0 评论 -
FPGA的学习:基于ROM的VGA图像显示
以十色等宽彩条做背景,将存储于 ROM 中的图片显示在 VGA 显示器的中心位置。图片分辨率为 100*100,VGA 显示模式为 640x480@60。效果类似于下图:首先需要将图片用Matlab转换为mif文件。mif文件生成代码如下:WIDTH=16;DEPTH=10000;ADDRESS_RADIX=UNS;DATA_RADIX=HEX;CONTENT BEGIN 0 :0 ; 1 :0 ; 2 :0 ; 3 :0 ; 4 :0 ; 5 :0 ;原创 2021-06-11 11:06:53 · 6602 阅读 · 1 评论 -
FPGA的学习:DHT11数字温湿度传感器
实验目标:控制 DHT11,读出湿度温度数据显示在数码管中,通过按键使湿度和温度在数码管中切换显示。系统的整体框图和工程模块如下。编写代码:`timescale 1ns/1nsmodule dht11_ctrl( input wire sys_clk , //系统时钟,频率50MHz input wire sys_rst_n , //复位信号,低电平有效 input wire原创 2021-06-10 16:04:07 · 1875 阅读 · 1 评论 -
FPGA的学习:DS18B20数字温度传感器
控制 DS18B20 实现对实时温度的转换并读出来显示在数码管上。`timescale 1ns/1nsmodule ds18b20_ctrl( input wire sys_clk , //系统时钟,频率50MHz input wire sys_rst_n , //复位信号,低电平有效 inout wire dq , //数据总线 output wir原创 2021-06-09 12:17:20 · 1535 阅读 · 1 评论 -
FPGA的学习:红外遥控
使用 FPGA 开发板配套的红外遥控器发送红外信号, FPGA 开发板上的一体化接收头接收到红外信号后传入 FPGA 芯片内, FPGA 芯片接收到信号后进行解码,将解码后的按键码显示在数码管上。若检测到发送了重复码,则让 led 闪烁显示,一个重复码闪烁一次。来看红外接收模块:`timescale 1ns/1nsmodule infrared_rcv( input wire sys_clk , //系统时钟,频率50MHz in原创 2021-06-09 12:10:06 · 2613 阅读 · 3 评论 -
FPGA的学习:简易电压表的设计与验证
外部挂载的高速 AD/DA 板卡的 A/D 部分将输入其中的模拟信号转换为数字量,将数字量传入 FPGA, FPGA 将传入的数字量通过计数转化为电压数值,通过数码管显示转化后的电压值,实现模拟信号的电压测量。整体框图如图所示。其中adc模块。`timescale 1ns/1nsmodule adc( input wire sys_clk , //时钟 input wire sys_rst_n原创 2021-06-08 19:42:15 · 1139 阅读 · 0 评论 -
FPGA的学习:简易频率计的设计与验证
设计一个基于等精度测量原理的简易频率计,对输入的未知时钟信号做频率测量,并将测量结果在数码管上显示。设计各个模块。画出时序图。用代码来实现。`timescale 1ns/1nsmodule freq_meter_calc( input wire sys_clk , //系统时钟,频率50MHz input wire sys_rst_n , //复位信号,低电平有效 input wire原创 2021-06-08 19:41:21 · 1243 阅读 · 0 评论 -
FPGA的学习:PLL-IP核的调用
锁相环是最常用的IP核之一,其性能强大,可以对输入到FPGA的时钟信号进行任意分频、倍频、相位调整、占空比调整,从而输出一个期望时钟。其基本原理如下:原创 2021-06-08 19:31:00 · 534 阅读 · 0 评论 -
FPGA的学习:数码管动态显示的实现(四)
最后进行仿真。`timescale 1ns/1nsmodule tb_top_seg_595();//wire definewire stcp ; //输出数据存储寄时钟wire shcp ; //移位寄存器的时钟输入 wire ds ; //串行数据输入wire oe ; //输出使能信号//reg definereg sys_clk ;reg sys_rst_n ;/原创 2021-06-08 19:29:26 · 428 阅读 · 1 评论 -
FPGA的学习:数码管动态显示的实现(三)
然后根据时序图就能进行程序的编写。首先是data_gen模块的编写。`timescale 1ns/1nsmodule data_gen#( parameter CNT_MAX = 23'd4999_999, //100ms计数值 parameter DATA_MAX= 20'd999_999 //显示的最大值)( input wire sys_clk , //系统时钟,频率50MHz input wire转载 2021-06-08 19:29:07 · 1055 阅读 · 0 评论 -
FPGA的学习:数码管动态显示的实现(二)
接着画出各部分的时序图。首先是数据生成的时序图。然后是二进制码转BCD码的波形图。最后是数码管动态显示波形图。原创 2021-06-08 19:28:49 · 404 阅读 · 2 评论 -
FPGA的学习:数码管动态显示的实现(一)
用数码管动态实现0~999999的现象。每隔一定的时间间隔进行自加。先画出系统框图。首先是顶层模块的系统框图。其中最后实现一个这样的总体功能。原创 2021-06-08 19:28:19 · 859 阅读 · 0 评论 -
FPGA的学习:数码管静态显示的实现(三)
实现代码之后,进行仿真。`timescale 1ns/1nsmodule tb_seg_595_static();//wire definewire stcp ; //输出数据存储寄时钟wire shcp ; //移位寄存器的时钟输入 wire ds ; //串行数据输入wire oe ; //输出使能信号//reg definereg sys_clk ;reg sys_rst原创 2021-06-08 11:54:57 · 445 阅读 · 4 评论 -
FPGA的学习:数码管静态显示的实现(二)
接着将控制模块的时序图画出来。按照时序图编写代码。`timescale 1ns/1nsmodule hc595_ctrl( input wire sys_clk , //系统时钟,频率50MHz input wire sys_rst_n , //复位信号,低有效 input wire [5:0] sel , //数码管位选信号 input wire原创 2021-06-08 11:54:02 · 668 阅读 · 5 评论 -
FPGA的学习:数码管静态显示的实现(一)
六位八段数码管原创 2021-06-07 14:02:44 · 2323 阅读 · 6 评论 -
FPGA的学习:触摸按键控制led灯的实现
首先来看时序图。接着按照时序图来编写:`timescale 1ns/1nsmodule touch_ctrl_led( input wire sys_clk , //系统时钟,频率50MHz input wire sys_rst_n , //复位信号,低电平有效 input wire touch_key , //触摸按键信号 output reg led //l...原创 2021-06-06 16:29:17 · 437 阅读 · 0 评论 -
FPGA的学习:状态机的实现(五)
用代码来实现时序图。`timescale 1ns/1nsmodule complex_fsm( input wire sys_clk , //系统时钟50MHz input wire sys_rst_n , //全局复位 input wire pi_money_one , //投币1元 input wire pi_money_half , //投币0.5元原创 2021-06-04 16:06:29 · 332 阅读 · 1 评论 -
FPGA的学习:状态机的实现(三)
用代码实现fsm`timescale 1ns/1nsmodule simple_fsm( input wire sys_clk , //系统时钟50MHz input wire sys_rst_n , //全局复位 input wire pi_money , //投币方式可以为:不投币(0)、投1元(1) output reg po_cola //po_cola为1时出可乐,po原创 2021-06-03 15:16:37 · 253 阅读 · 0 评论 -
FPGA的学习:状态机的实现(一)
用状态机实现一些具体问题,实现一个简单的可乐机系统。可乐售价三元,每次投入一个硬币,投入三次后,可乐机吐出一个可乐。输入:投入1元硬币输出:出可乐,不出可乐状态:投入0元,投入1元,投入2元,投入3元。...原创 2021-06-01 21:25:24 · 237 阅读 · 0 评论 -
FPGA的学习:按键消抖的实现
首先先来看系统框图和时序图。接着编写代码实现`timescale 1ns/1nsmodule key_filter#( parameter CNT_MAX = 20'd999_999 //计数器计数最大值)( input wire sys_clk , //系统时钟50Mhz input wire sys_rst_n , //全局复位 input wire key_in , //按键输...原创 2021-05-28 09:29:59 · 465 阅读 · 0 评论 -
FPGA的学习:6分频的实现
首先画出系统框图和时序图。`timescale 1ns/1nsmodule divider_six( input wire sys_clk , //系统时钟50Mhz input wire sys_rst_n , //全局复位 output reg clk_flag //指示系统时钟6分频后的脉冲标志信号);reg [2:0] cnt; //用于计数的寄存器//cnt:计数器从0到5循环...原创 2021-05-27 10:03:03 · 1280 阅读 · 2 评论 -
FPGA的学习:5分频的实现
首先先把偶分频的系统框图和时序图画出来。此次采用降频的原理,了解了远离之后,开始代码的编写。`timescale 1ns/1nsmodule divider_five( input wire sys_clk , //系统时钟50Mhz input wire sys_rst_n , //全局复位 output reg clk_flag //指示系统时钟5分频后的脉冲标志信号);reg [2...原创 2021-05-26 13:46:42 · 1535 阅读 · 2 评论 -
FPGA的学习:计数器的实现
实现一个led灯前0.5s点亮,后0.5s熄灭这样的状态。首先画出系统框图和结构图。原创 2021-05-25 09:24:27 · 2218 阅读 · 5 评论 -
FPGA的学习:阻塞赋值与非阻塞赋值
阻塞赋值:阻塞赋值的赋值号用=表示,对应的电路结构往往与触发沿没有关系,只与输入电平的变化有关系。它的操作可以认为是只有一个步骤的操作,即计算赋值号右边的语句并更新赋值号左边的语句,此时不允许有来自任何其他Verilog语句的干扰,直到现行的赋值完成,才允许下一条的赋值语句的执行。串行块(begin-end)中,各条阻塞赋值语句将以它们在顺序块中的排列次序依次执行。例如:a=1,b=2, c=3;begin a=b+1; b=a+2; c=a-1;en...原创 2021-05-24 10:28:22 · 380 阅读 · 2 评论 -
FPGA的学习:D触发器
首先把系统框图和时序图画出来:同步复位:只在时钟上升沿发生信号的变化异步复位:在时钟的上升沿和复位信号的下降沿发生信号的变化接着编写程序来实现:`timescale 1ns/1nsmodule flip_flop( input wire sys_clk , //系统时钟 input wire sys_rst_n , //全局复位 input wire key_in , //输入按键...原创 2021-05-24 10:08:47 · 1633 阅读 · 1 评论 -
FPGA的学习:全加器的实现
前面已经学习了半加器的实现。全加器的实现是依靠两个半加器实现,首先来看系统框图和时序图。这里实现功能的时候用到了半加器的实例化,所以需要在此文件夹下同时放入半加器的实现,不然编译会不通过`timescale 1ns/1nsmodule full_adder( input wire in1 , //加数1 input wire in2 , //加数2 input wire cin , //上一级的进位 ...原创 2021-05-23 11:58:08 · 1387 阅读 · 0 评论 -
FPGA的学习:半加器的实现
首先来看系统框图和时序图。半加器有两个输出信号,一个求和信号,一个进位信号。了解了时序之后,开始编写程序实现半加器的功能。`timescale 1ns/1nsmodule half_adder( input wire in1 , //加数1 input wire in2 , //加数2 output wire sum , //两个数的加和 output wire cout //加和后...原创 2021-05-22 14:23:08 · 1060 阅读 · 1 评论 -
FPGA的学习:3线8线译码器的实现
首先来看系统框图和原理图。输入信号有三个,然后2的3次方是8,所以输出有8个。了解了时序后,对功能进行编码实现。`timescale 1ns/1nsmodule decoder3_8( input wire in1 , //输入信号in1 input wire in2 , //输入信号in2 input wire in3 , //输入信号in2 outpu...原创 2021-05-21 13:00:53 · 3064 阅读 · 0 评论 -
FPGA的学习:选通器的实现
实验二:选通器的实现首先,画出选通器的结构框图和时序图。了解了实现过程和时序关系后,我们进行编程来实现选通器的功能。`timescale 1ns/1nsmodule mux2_1( input wire in1, input wire in2, input wire sel, output reg out ); //out:组合逻辑输出sel选择的结果,“*”为通配符...原创 2021-05-20 22:32:36 · 1340 阅读 · 0 评论 -
FPGA的学习:led的点亮
之前花了三天的时间把本科毕业设计的东西给复现了下。但能明显的感觉到没有经过系统的学习,每行代码都需要自己一点一点的硬性理解,所以接下来的每一天我都准备记录自己的学习心得,每天学一点知识,学无止境,一起加油。实验一 led的点亮所有人都耳熟能详的第一个实验,点亮led。首先,画出led的结构框图和时序图,作为新的起点,这两个图能帮助我们理清时序的关系。了解了led的实现过程和时序关系后,我们进行编程来实现led的点亮。module led( input wir...原创 2021-05-19 10:48:30 · 786 阅读 · 0 评论 -
基于FPGA和DDS技术的波形产生(仿真部分)
本次仿真主要对三个主要的模块进行仿真,分别是key_control模块,DDS波形产生模块以及顶层模块。首先来看第一个部分key_contrtol模块的仿真。`timescale 1ns/1nsmodule tb_key_cntrol ();//参数的设定parameter CNT_1MS = 20'd19 , CNT_11MS = 21'd69 , CNT_41MS...原创 2021-05-18 14:37:57 · 773 阅读 · 0 评论 -
基于FPGA和DDS技术的波形产生
Step1:流程图设计出Key_control模块,DDS波形模块以及Top_DDS模块。其中Key_control模块中需要设计一个Key_filter防抖模块DDS波形模型中需要调用一个已经设计的ROM的IP核。原创 2021-05-17 22:37:40 · 322 阅读 · 1 评论