FPGA project : water_led

2023-11-19

 

 

module water_led 
#(
    parameter MAX_CNT = 25'd25_000_000 
)
(
    input           wire                sys_clk     ,
    input           wire                sys_rst_n   ,

    output          wire    [03:00]     led
);
    // signal
    reg     [24:00]     cnt_half_sec ;
    wire                add_cnt      ;
    wire                end_cnt      ;

    reg     [03:00]     led_r        ;
    reg                 ctrl         ;

    // cnt
    always @(posedge sys_clk or negedge sys_rst_n) begin
        if(~sys_rst_n) begin
            cnt_half_sec <= 0 ;
        end else begin
            if(add_cnt) begin
                if(end_cnt) begin
                    cnt_half_sec <= 0 ;
                end else begin
                    cnt_half_sec <= cnt_half_sec + 1'b1 ;
                end
            end else begin
                cnt_half_sec <= 0 ;
            end
        end
    end
    assign add_cnt = 1'b1 ;
    assign end_cnt = add_cnt && cnt_half_sec == ( MAX_CNT - 1'b1 ) ;

    // // led_r <<
    // always @(posedge sys_clk or negedge sys_rst_n) begin
    //     if(~sys_rst_n) begin
    //         led_r <= 4'b0001 ;
    //     end else begin
    //         if((led_r == 4'b1000) && end_cnt ) begin
    //             led_r <= 4'b0001 ;
    //         end else begin
    //             if(end_cnt) begin
    //                 led_r <= ( led_r << 1 ) ;
    //             end else begin
    //                 led_r <= led_r ;
    //             end
    //         end
    //     end
    // end
    // led_r {}
    always @(posedge sys_clk or negedge sys_rst_n) begin
        if(~sys_rst_n) begin
            ctrl <= 1'b1 ;
        end else begin
            if(end_cnt && led_r == 4'b0010) begin
                ctrl <= 1'b1 ;
            end else begin
                if(end_cnt && led_r == 4'b0100) begin
                    ctrl <= 1'b0 ;
                end else begin
                    ctrl <= ctrl ;
                end
            end
        end
    end

    always @(posedge sys_clk or negedge sys_rst_n) begin
        if(~sys_rst_n) begin
            led_r <= 4'b0001 ;
        end else begin
            if(ctrl) begin
                if(end_cnt) begin
                    led_r <= {led_r[2:0],led_r[3]} ;
                end else begin
                    led_r <= led_r ;
                end
            end else begin
                if(end_cnt) begin
                    led_r <= {led_r[0],led_r[3:1]} ;
                end else begin
                    led_r <= led_r ;
                end
            end
        end
    end
    // led
    assign led = ~led_r ;

endmodule
`timescale 1ns/1ns
module test();
    reg                 sys_clk     ;
    reg                 sys_rst_n   ;

    wire    [03:00]     led         ;

water_led 
#(
    .MAX_CNT (50) 
)
water_led_insert
(
    .sys_clk            ( sys_clk   ) ,
    .sys_rst_n          ( sys_rst_n ) ,

    .led                ( led       )
);

    parameter CYCLE = 20 ;

    initial begin
        sys_clk    = 1'b1 ;
        sys_rst_n <= 1'b0 ;
        #( CYCLE * 10 )   ;
        sys_rst_n <= 1'b1 ;
        #( 210 )          ;
        sys_rst_n <= 1'b0 ;
        #( CYCLE * 10 )   ;
        sys_rst_n <= 1'b1 ;
        #( CYCLE * 50 * 20 ) ;
        $stop             ;
    end

    always #( CYCLE / 2 ) sys_clk = ~sys_clk ;


endmodule

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FPGA project : water_led 的相关文章

  • 各种FIFO硬件设计(FIFO概念、异步、同步、非2次幂深度FIFO)

    文章目录 一 FIFO概述 二 FIFO分类 三 FIFO重要信号与参数 3 1 信号 3 2 参数 3 2 1 data depth的确定 四 FIFO存储原理 五 同步FIFO 5 1 空满信号判断 5 2 同步FIFO源码 5 3 测
  • Verilog的奇技淫巧[更新中]

    1 Verilog常用的数据选择语句vect a b 或vect a b 转载自 MDY常用的数据选择语句Verilog明德扬论坛 Powered by Discuz vect为变量名字 a为起始位置 加号或者减号代表着升序或者降序 b是进
  • 平头哥(T-Head )开源RISCV处理器OpenC906 RTL仿真

    在过去的几年里 阿里集团平头哥陆续推出了几款RISCV处理器 有些处理器已经在产业界得到了应用 比如在某志的D1处理器中 就嵌入了平头哥的玄铁C906内核为 芯 RISCV虽然是一个开放标准 并且网络上也不乏一些开源核的RTL实现 但是商用
  • modelsim 关联 notepad++

    modelsim 控制窗口敲入 1 proc external editor filename linenumber exec I notepad notepad exe filename 2 set PrefSource altEdito
  • Verilog中forever、repeat、while、for四类循环语句(含Verilog实例)

    当搭建FPGA逻辑时 使用循环语句可以使语句更加简洁易懂 Verilog中存在四类循环语句 如标题 几种循环语句的具体介绍和用法如下 1 forever 连续的执行语句 语法格式 forever
  • Matlab 高斯信道下QPSK通带通信系统的简单仿真

    1 原理 2 仿真 3 总结反思 4 参考资料 1 原理 QPSK的具体内容请参考百度 QPSK的调制jie框图大致如下 QPSK信号可以采用正交调制的方式产生 如第一张图片的左半部分 I路信号与cos 信号相乘 Q 路信号与sin信号相乘
  • 二、RISC-V SoC内核注解——译码 代码讲解

    tinyriscv这个SoC工程的内核cpu部分 采用经典的三级流水线结构进行设计 即大家所熟知的 取值 gt 译码 gt 执行三级流水线 另外 在最后一个章节中会上传额外添加详细注释的工程代码 完全开源 如有需要可自行下载 上一篇博文中注
  • 手把手教你Modelsim仿真【2020.4版本】

    首先新建一个文件夹 test5 打开Modelsim 依次选择 File gt Change Directory 把目录选择到创建的 test5 文件夹 创建库 依次选择 File gt New gt Library 一般我们选择第三个 库
  • 笔试

    文章目录 前言 40 复位电路设计 1 recovery time和removal time 2 同步复位和异步复位 3 异步复位同步释放 本文参考 往期精彩 前言 嗨 今天来学习复位电路设计相关问题 微信关注 FPGA学习者 获取更多精彩
  • 小梅哥Xilinx FPGA学习笔记9——语法(阻塞与非阻塞赋值)

    阻塞赋值与非阻塞赋值详解 注意 阻塞赋值 1 设计文件 2 激励文件 3 原理图 4 仿真图 非阻塞赋值 1 设计文件 2 激励文件 3 原理图 4 仿真图 注意 阻塞赋值与非阻塞赋值 只有在时序逻辑中才有 不是阻塞赋值 也不是非阻塞赋值
  • FPGA硬件工程师Verilog面试题(基础篇二)

    作者简介 大家好我是 嵌入式基地 是一名嵌入式工程师 希望一起努力 一起进步 个人主页 嵌入式基地 系列专栏 FPGA Verilog 习题专栏 微信公众号 嵌入式基地 FPGA硬件工程师Verilog面试题 二 习题一 多功能数据处理器
  • TestBench编写_激励产生

    TestBench编写 激励产生 TestBench编写 激励产生 基本背景 读取函数介绍 a fopen函数使用 b fread函数使用 c fclose函数使用 实际使用 TestBench编写 激励产生 基本背景 最近遇到项目中需要对
  • Verilog HDL——Modelsim仿真

    常用testbench语法 finish 和 stop finish任务用于终止仿真并跳出仿真器 stop任务则用于中止仿真 timescale time unit time precision time unit指定计时和延时的测量单位
  • FPG—VGA显示器字符显示(附代码)

    目录 1 实操 1 1 字符取模 1 2 顶层模块 1 3 图像数据生成模块 1 3 1 模块框图 1 3 2 波形图绘制 1 3 3 代码编写 1 3 4 仿真验证 2 总结 本例程大部分与VGA显示驱动内容相同 只是显示部分改变了 故此
  • 蓝桥杯真题:迷宫

    目录 题目描述 运行限制 dfs bfs 结果 题目描述 本题为填空题 只需要算出结果后 在代码中使用输出语句将所填结果输出即可 下图给出了一个迷宫的平面图 其中标记为 11 的为障碍 标记为 00 的为可以通行的地方 010000 000
  • 基于FPGA的AHT10传感器温湿度读取

    文章目录 一 系统框架 二 i2c接口 三 i2c控制模块 状态机设计 状态转移图 START INIT CHECK INIT IDLE TRIGGER WAIT READ 代码 四 数据处理模块 串口 代码 五 仿真 testbench设
  • 无线网络管理系统与无线路由器的区别

    第5章 波形发生器软件设计 本章我们将介绍系统的软件设计 系统中控制软件占有很重要的地位 它不仅要产生波形数据 控制波形的发生 还要控制显示电路和键盘电路 因此系统软件的好坏直接决定着系统的功能和稳定 5 1软件的总体结构 在本系统中 由于
  • MINI-UTDE 10 BASE-T 集成控制器

    MINI UTDE 10 BASE T 集成控制器 MINI UTDE 10 BASE T 拥有多达三个本地I O板和远程I OS总线通信 为用户提供了一系列生产单元功能的单一控制点 包括诸如夹头 反馈器和辅助机器等外围生产设备 支持所有主
  • TRICONEX MA2211-100 芯片上相互连接

    TRICONEX MA2211 100 芯片上相互连接 TRICONEX MA2211 100 所有相同的组件 io的电源 处理器 和内存将需要 但是 你可以看到所有这些带存储器和处理器的OO板 针不能嵌入到一个小的单片机上 现在是 普拉克
  • ESP10B 锁定连接器

    ESP10B 锁定连接器 ESP10B 电机新增内容包括双极型号标准 NEMA 尺寸 17 23 和 34 的步进电机现在包括输出扭矩范围从 61 盎司英寸到 1291 盎司英寸的双极型号 该电机配有带锁定连接器的尾缆 可轻松连接 每转可步

随机推荐

  • php判断2个多维数组是否相同,PHP如何判断一个数组是一维还是多维

    什么叫多维数组呢 多维数组 本质上是以数组作为数组元素的数组 二维数组又称为矩阵 一个数组的元素如果是一维数组 那么我们就称这个数组是二维数组 怎么判断一个数组是否是一维数组呢 通过count 函数 int count mixed var
  • 【FPGA】:频率测量

    转载 1 FPGA频率测量的三种方法 直接测量法 间接测量法 等精度测量法
  • Go中sync 包的 Once 使用

    文章目录 背景 One 简介 示例 注意 源码解读 背景 在系统初始化的时候 某些代码只想被执行一次 这时应该怎么做呢 没有学习 Once 前 大家可能想到 声明一个标识 表示是否初始化过 然后初始化这个标识加锁 更新这个标识 但是学会了
  • .net IOC之Spring.Net

    一 开发环境 编译器 VS2013 Net版本 net framework4 5 二 涉及程序集 Spring Core dll 1 3 Common Logging 三 开发过程 1 项目结构 2 添加Person cs namespac
  • 数码管电子时钟

    文章目录 前言 一 回顾数码管 二 任务描述 三 系统框图 四 模块调用 五 模块原理图 六 工程源码 6 2 时钟计数模块代码 6 2 数码管驱动模块代码 6 3 顶层模块代码 七 仿真测试 7 1 测试代码 7 2 仿真结果 八 管脚信
  • networkmanager无法打开

    中午登录ubuntu刚要连接无可线发现个的问题 无线的图标不见了 这可肿么办啊 怎么找都找不到 开始想系统还原 后来发现还挺麻烦的 毕竟菜鸟 系统方面的还不怎么懂 幸好有两台电脑 可以google 唉 最近两天google也不正常 今天也不
  • Llama 美洲鸵(大羊驼)改进之一:均方层归一化RMSNorm

    Layer Normalization LayerNorm Root Mean Square Layer Normalization RMSNorm 原理 对特征张量按照某一维度或某几个维度进行0均值 1方差的归一化 操作 LayerNor
  • 神经网络控制系统的特点,神经网络控制的优点

    什么是神经网络控制 神经网络控制技术是一项复杂的系统控制技术 一般应用在变频器的控制中 它是通过对系统的辨识 运算后对变频器进行控制的一种新技术 而且神经网络控制可以同时控制多个变频器 所以应用在多个变频器级联控制中比较合适 谷歌人工智能写
  • angularjs官方教程中的两处错误

    看到官方教程中HTTP小节之前还在向同事夸angularjs的教程做的厚道 没有什么坑 结果到http就出现了 发现了两处错误 度娘各种搜索没有发现相关的帖子 于是记录下来 希望能被高效收录 以解广大IT民工之困扰 getHero id n
  • stream流常用

    从一个List中获得每个object的对象的id组成一个list List
  • 卓越性能代码_「Win」被隐藏起来的卓越性能模式,为何不想让人发现?

    前言 众所周知 电脑电源管理中包含三大模式 分别是 节能模式 平衡模式 高性能模式 其对电脑的性能影响还是比较大的 但是今天所说的 卓越性能模式 应该很多人都没听说过 又是何方神圣 其为何要隐藏起来不想被人发现 如何开启 卓越性能 模式 右
  • LLaMA微调记录

    本文基于开源代码https github com Lightning AI lit llama tree main执行微调 其他参考链接 Accelerating LLaMA with Fabric A Comprehensive Guid
  • 实验二:使用KMP算法实现字符串的匹配

    1 实验目的 熟练的掌握数据结构中串这种数据类型 学会使用相较于朴素的模式识别算法更加先进的KMP算法进行识别和匹配 同时 在数据结构试验之中熟悉和了解串的性质和使用方法 2 实验要求 输入 通过命令行参数输入原字符串和模式字符串 输出 1
  • 全排列问题

    问题描述 给定一个由不同的小写字母组成的字符串 输出这个字符串的所有全排列 我们假设对于小写字母有 a lt b lt lt y lt z 而且给定的字符串中的字母已经按照从小到大的顺序排列 输入 输入只有一行 是一个由不同的小写字母组成的
  • 超详细Vue Devtools的下载和安装——Vue的调试工具

    在使用 Vue 时 我们推荐在浏览器上安装 Vue Devtools Vue Devtools 是 Vue 官方发布的调试浏览器插件 可以安装在 Chrome 和 Firefox 等浏览器上 直接内嵌在开发者工具中 使用体验流畅 Vue D
  • 哪些行业是离散制造?哪些是流程制造?他们有什么区别?

    一 离散制造业 定义 产品往往由多个零件经过一系列并不连续的工序的加工最终装配而成 典型的离散制造行业主要包括机械制造 电子电器 航空制造 汽车制造等行业 大批量生产 如 汽车 多品种小批次 如 航空 95 企业属于多品种小批次 客户需求多
  • C# .NET万能数据库访问封装类(ACCESS、SQLServer、Oracle)

    在app config文件中写上数据库中连接信息
  • 2023年华为笔试面试机考真题100道(C/C++语言)

    1 字符串比较 给定字符串A B和正整数V A的长度与B的长度相等 请计算A中满足如下条件的最大连续子串的长度 1 该连续子串在A和B中的位置和长度均相等 2 该连续子串 A i B i 之和小于等于V 其中 A i B i 表示两个字母A
  • CTF BugKu平台——Crypto篇刷题记录(后续更新)

    CTF BugKu平台 Crypto篇 前言 抄错的字符 聪明的小羊 ok lt gt 把猪困在猪圈里 你喜欢下棋吗 小山丘的秘密 EN 气泡 你以为是md5吗 Math English easy crypto 黄道十二官 一段新闻 7 1
  • FPGA project : water_led

    module water led parameter MAX CNT 25 d25 000 000 input wire sys clk input wire sys rst n output wire 03 00 led signal r