首页 > 其他分享 >bink LED

bink LED

时间:2024-08-29 23:25:20浏览次数:4  
标签:led bink clk input rst LED div

FPGA 学习笔记1

本系列文章用于记录FPGA学习过程, 类似流水账,不做总结提炼.

设计

模块化设计, 这里分为 分频器, led控制器, 复位信号产生器.

实现

分屏器

module Clk_div
#(
  parameter  DIV      = 5000
)(
  input i_clk,
  input i_rst,
  output o_clk_div
);

parameter DIV_CNT = DIV/2;

reg [15:0] r_cnt = 0;
reg r_clk_div;

assign o_clk_div = r_clk_div;

always @(posedge i_clk or posedge i_rst)
begin
  if(i_rst)
    r_cnt <= 0;
  else if (r_cnt == DIV_CNT)
    r_cnt <= 1;
  else
    r_cnt <= r_cnt + 1;
end

always @(posedge i_clk or posedge i_rst)
begin
  if(i_rst)
    r_clk_div <= 0;
  else if (r_cnt == DIV_CNT)
    r_clk_div <= ~r_clk_div;
  else
    r_clk_div <= r_clk_div;
end


endmodule

: 一开始cnt没有赋初值, 还懒得写复位信号, 就会导致计数器一直不公正,因为没有处置

led 控制器

module LED_Driver
#(
  parameter  LED_NUMBER  = 1,
  parameter  LED_ON     = 1
)(
  input i_ctl,
  input i_en,
  output [LED_NUMBER-1:0] o_led
);


reg [LED_NUMBER-1:0] r_led;

assign o_led = r_led;

always @ (*) begin
  if(i_en) begin
    r_led <= i_ctl;
  end
  else begin
    r_led <= ~LED_ON;
  end
end




endmodule

: 一直都是用的上升沿触发, 这里希望的是电平触发,结果没注意一直没信号

复位信号生成器

module rst_gen #(
    parameter  RST_CYCLE  = 1
)(
    input i_clk,
    output o_rst
);

reg r_o_rst = 1;

reg [15:0] r_cnt = 0;

assign o_rst = r_o_rst;

always @(posedge i_clk) begin
    if (r_cnt == RST_CYCLE) begin
        r_o_rst <= 0;
    end
    else begin
        r_o_rst <= 1;
    end
end

always @(posedge i_clk) begin
    if (r_cnt == RST_CYCLE) begin
        r_cnt <= r_cnt;
    end
    else begin
        r_cnt <= r_cnt + 1;
    end
end


endmodule

作用, 每次上电后自动根据时钟生成一个RST_CYCLE长度的复位信号.因为只有每次上电的时候初值是0

module top(
  input i_clk,
  output o_led
);

wire rst;
wire clk_8m;
wire clk_locked;
wire clk_1k;
wire led_ctl;

rst_gen rst_gen_inst
(
  .i_clk  (i_clk),
  .o_rst  (rst)
);

clk_8m clk_8m_inst
(
  .clk_in1  (i_clk),
  .clk_out1 (clk_8m),
  .locked   (clk_locked)
);

Clk_div #(
  .DIV   (8000)
) clk_div_inst0 (
  .i_clk  (clk_8m),
  .i_rst  (rst),
  .o_clk_div  (clk_1k)
);

Clk_div #(
  .DIV   (2000)
) clk_div_inst1 (
  .i_clk  (clk_1k),
  .i_rst  (rst),
  .o_clk_div  (led_ctl)
);

LED_Driver
#(
  .LED_NUMBER  (1),
  .LED_ON     (1)
) led_inst
(
  .i_ctl  (led_ctl),
  .i_en   (clk_locked),
  .o_led  (o_led)
);

用到一个IP clk, PLL, 作用是可以产生时钟? 但是却需要输入时钟, 更多的需要去了解PLL.
用到两个自己的分频器,因为好像一个不够, 不知道如果分频器的参数设置过大超出了16位寄存器的最大值会发生什么.

电平标准

  • TTL: 三极管单端输出,
  • COMS: MOS管单端输出--功率低,翻转快,不超过200M,建议小于150M使用
  • LVDS: 低压差分信号
  • LVPECL: 高速差分, 差值更大,抗干扰更强, 速度更快
  • TMDS: 差分, 针对HDMI
  • SSHT,HSTL:专用DDR存储器的单端输出

差分信号定义

使用原语, vivado 搜 OBUFDS. o-out, buf, DS-差分.

原语: 是fpga内部你硬核,使用电路实现的.

标签:led,bink,clk,input,rst,LED,div
From: https://www.cnblogs.com/tggpx/p/18387221

相关文章

  • 基于STM32F407ZGT6用BH1750在OLED显示屏上显示光照数据,根据光照强度控制小灯亮灭(路灯
    占空比:高电平占整个电平周期的持续时长,从而控制小灯的亮度,小灯亮度的控制需用定时器的输出比较功能。PWM部分可以参考这篇文章PWM——基于STM32F407ZGT6开发板-CSDN博客此外我们还需要了解IIC的工作原理1.pwm.c   #include"public.h"/*pwm控制led实现呼吸灯1.......
  • gyp GET https://nodejs.org/download/release/v20.15.0/node-v20.15.0-headers.tar.g
    如图我执行yarn关于node会报错:gyphttpGEThttps://nodejs.org/download/release/v20.15.0/node-v20.15.0-headers.tar.gzgyphttpfetchGEThttps://nodejs.org/download/release/v20.15.0/node-v20.15.0-headers.tar.gzattempt1failedwithETIMEDOUTgypWARNins......
  • OLED显示屏详解(IIC协议0.96寸 STM32)
     目录 一、介绍 二、模块原理1.原理图2.工作原理:SSD1306显存与命令三、程序设计main.c文件oled.h文件oled.c文件四、实验效果 五、资料获取项目分享一、介绍        OLED是有机发光二极管,又称为有机电激光显示(OrganicElectroluminescenceDisplay......
  • 安卓11报错:Failed to resolve: com.github.xxxx:14.0 Show in Project Structure dial
    本篇文章主要讲解,安卓11版本情况下项目运行报错Failedtoresolve:com.github.getActivity:Toaster:14.0ShowinProjectStructuredialogAffectedModules:app的主要原因及解决办法。作者:任聪聪独立博客:https://rccblogs.com/631.html日期:2024年8月28日具体......
  • AP5151线性降压LED恒流芯片 2.7-5.5V 照明手电筒、台灯、矿灯方案
    概述AP5151是一种低压差、线性降压、固定输出电流的LED恒流驱动器。除LED外,AP5151无需外接其它元器件即可构成一个恒流输出的LED驱动电路。AP5151内置过热保护功能,可有效保护芯片,避免结温超过120°C时因过热而造成损坏。AP5151还集成了LED短路保护、电源欠压......
  • vue-router 跳转异常 Error: Navigation cancelled from “/“ to “/home“ with a n
    异常信息:Error:Havigationcancelledfrom"/"to"/home"withanewnavigation ,如下图:原因:    1、这个错误是vue-router内部错误,没有进行catch处理,导致的编程式导航跳转问题,往同一地址跳转时会报错的情况。push和replace都会导致这个情况的发生。   ......
  • 蓝桥杯单片机入门(8)—按键控制LED流水灯,加速,减速,暂停,开始
    这回我们讲的是,按键对LED灯的控制,这次是基于上次按键模块的基础上进行了进一步的加工,处理。通过按键,实现对LED流水灯的对应的各种功能。首先,在这里先介绍一个概念,标志位,标志位可以理解为设置的一个变量,这个变量作为标志位去使用,给标志位赋不同的值,执行不同的任务。比如标志位F......
  • 【python3.8安装报错】lmportError: DLL load failed while importing ft2font: 找不
    客户需求背景:安装python3.8无法运行,报错lmportError:DLLloadfailedwhileimportingft2font:找不到指定的模块 考虑兼容性问题这个问题首先需要考虑的是是否是python版本太高了,因为python3.9不支持win7,而python3.8版本对win7的兼容性也有一定的限制。解决:首先考......
  • module verification failed: signature and/or required key missing - tainting ker
    不同的机器编译同一个版本的内核源码生成的签名密钥(`signing_key.pem`)是不相同的。以下是原因和详细解释:签名密钥(`signing_key.pem`)的生成过程当你在编译内核时,默认情况下,内核编译过程会生成一个新的签名密钥对(包括`signing_key.pem`和`signing_key.x509`)。这个过程......
  • STM32 - 按键控制LED灯
    功能:按键控制LED的亮灭。两个按键:PE3和PE2两个LED:PE5和PB5按键PE3控制LED2-PE5;按键PE2控制LED3-PB5main.c:#include"stm32f10x.h"//Deviceheader#include"Delay.h"#include"LED.h"#include"Key.h"uint8_tKeyNum;i......