基于fpga的方波发生器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

@[TOC](文章目录)


前言

基于fpga的方波发生器,原理是模拟stm32定时器输出占空比和频率可调的方波,并在RGB_LCD屏幕上显示。


一、方波调节

   reg                [30:0]             arr=20'd10000;    reg                [30:0]             ccr1=20'd5000;   reg                [30:0]             cnt=20'd0;//计数器always @(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)begincnt<=20'd0;endelse begincnt<=cnt+1'd1; if(cnt>=arr)cnt<=1'd0;endend always @(posedge sys_clk or negedge sys_rst_n)begin//if(!sys_rst_n);else  beginif(cnt<=ccr1)dds_out<=1'd1;else if(cnt>=ccr1)dds_out<=1'd0;end                endalways @(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)beginduty_cycle<=20'd0;frequency<=20'd0;endelse beginduty_cycle<=ccr1*10'd100/arr;frequency<=20'd50000*10/arr;endend
  • fpga的工作频率为50Mhz,通过cnt计数器模拟32的定时器,当cnt的值低于ccr1时,输出为低电平,当cnt的值高于ccr1时,输出为高电平,当计数器计到arr(自动重装载值),cnt值归零重新开始计数。方波的频率为50Mgz/arr值,arr为多少,就是把主频分多少。方波的占空比为ccr1/arr值。
    

二、按键控制

//根据按键值控制arr基于ccr1值always @(posedge sys_clk or negedge sys_rst_n)beginif(!sys_rst_n)beginflag<=1'd0;endelse beginif((key_data==4'b1110)&(flag==0))beginarr<=arr+10'd1000;flag<=1'd1;endelse if((key_data==4'b1101)&(flag==0))beginarr<=arr-10'd1000;flag<=1'd1;endelse if((key_data==4'b1011)&(flag==0))beginccr1<=ccr1+10'd1000;flag<=1'd1;endelse if((key_data==4'b0111)&(flag==0))beginccr1<=ccr1-10'd1000;flag<=1'd1;endelse if((key_data==4'b1111)&(flag==1))beginflag<=1'd0;endif(ccr1>=arr)ccr1<=arr;else if(ccr1<=1'd0)ccr1<=1'd0;if(arr<=1'd0)arr<=1'd0;end
end
  通过四个按键控制arr值基于ccr1值的大小改变占空比和频率。

三,lcd显示

always @(posedge lcd_pclk or negedge rst_n) beginif(!rst_n)pixel_data <= BLACK;else beginif((pixel_xpos >= 11'd0) && (pixel_xpos <=h_disp/5*1))beginif((pixel_xpos >= 11'd0) && (pixel_xpos <duty))beginif((pixel_ypos<v_disp/4)&&(pixel_ypos>(v_disp/4-5)))//高电平pixel_data<= WHITE;else    pixel_data<= BLACK;endelse if(pixel_xpos==duty)if((pixel_ypos>v_disp/4)&&(pixel_ypos<v_disp/4*3))//下降沿pixel_data<= WHITE;else pixel_data<= BLACK;else if((pixel_xpos< h_disp/5*1) && (pixel_xpos>duty))      if((pixel_ypos<v_disp/4*3)&&(pixel_ypos>(v_disp/4*3-5)))//低电平pixel_data<= WHITE;else    pixel_data<= BLACK;  else if(pixel_xpos==h_disp/5*1)if((pixel_ypos>v_disp/4)&&(pixel_ypos<v_disp/4*3))//上升沿pixel_data<= WHITE;else pixel_data<= BLACK;end      else  if((pixel_xpos > h_disp/5*1) && (pixel_xpos <=h_disp/5*2))beginif((pixel_xpos > h_disp/5*1) && (pixel_xpos <(h_disp/5*1+duty)))if((pixel_ypos<v_disp/4)&&(pixel_ypos>(v_disp/4-5)))pixel_data<= WHITE;else    pixel_data<= BLACK;else if(pixel_xpos==h_disp/5*1+duty)if((pixel_ypos>v_disp/4)&&(pixel_ypos<v_disp/4*3))pixel_data<= WHITE;else pixel_data<= BLACK;else if((pixel_xpos< h_disp/5*2) && (pixel_xpos>(h_disp/5*1+duty)))      if((pixel_ypos<v_disp/4*3)&&(pixel_ypos>(v_disp/4*3-5)))pixel_data<= WHITE;else    pixel_data<= BLACK;  else if(pixel_xpos==h_disp/5*2)if((pixel_ypos>v_disp/4)&&(pixel_ypos<v_disp/4*3))pixel_data<= WHITE;else pixel_data<= BLACK;end else  if((pixel_xpos > h_disp/5*2) && (pixel_xpos <=h_disp/5*3))beginif((pixel_xpos > h_disp/5*2) && (pixel_xpos <(h_disp/5*2+duty)))if((pixel_ypos<v_disp/4)&&(pixel_ypos>(v_disp/4-5)))pixel_data<= WHITE;else    pixel_data<= BLACK;else if(pixel_xpos==h_disp/5*2+duty)if((pixel_ypos>v_disp/4)&&(pixel_ypos<v_disp/4*3))pixel_data<= WHITE;else pixel_data<= BLACK;else if((pixel_xpos< h_disp/5*3) && (pixel_xpos>(h_disp/5*2+duty)))      if((pixel_ypos<v_disp/4*3)&&(pixel_ypos>(v_disp/4*3-5)))pixel_data<= WHITE;else    pixel_data<= BLACK;  else if(pixel_xpos==h_disp/5*3)if((pixel_ypos>v_disp/4)&&(pixel_ypos<v_disp/4*3))pixel_data<= WHITE;else pixel_data<= BLACK;end else  if((pixel_xpos > h_disp/5*3) && (pixel_xpos <=h_disp/5*4))beginif((pixel_xpos > h_disp/5*3) && (pixel_xpos <(h_disp/5*3+duty)))if((pixel_ypos<v_disp/4)&&(pixel_ypos>(v_disp/4-5)))pixel_data<= WHITE;else    pixel_data<= BLACK;else if(pixel_xpos==h_disp/5*3+duty)if((pixel_ypos>v_disp/4)&&(pixel_ypos<v_disp/4*3))pixel_data<= WHITE;else pixel_data<= BLACK;else if((pixel_xpos< h_disp/5*4) && (pixel_xpos>(h_disp/5*3+duty)))      if((pixel_ypos<v_disp/4*3)&&(pixel_ypos>(v_disp/4*3-5)))pixel_data<= WHITE;else    pixel_data<= BLACK;  else if(pixel_xpos==h_disp/5*4)if((pixel_ypos>v_disp/4)&&(pixel_ypos<v_disp/4*3))pixel_data<=WHITE;else pixel_data<= BLACK;end else  if((pixel_xpos > h_disp/5*4) && (pixel_xpos <=h_disp/5*5))beginif((pixel_xpos > h_disp/5*4) && (pixel_xpos <(h_disp/5*4+duty)))if((pixel_ypos<v_disp/4)&&(pixel_ypos>(v_disp/4-5)))pixel_data<= WHITE;else    pixel_data<= BLACK;else if(pixel_xpos==h_disp/5*4+duty)if((pixel_ypos>v_disp/4)&&(pixel_ypos<v_disp/4*3))pixel_data<= WHITE;else pixel_data<= BLACK;else if((pixel_xpos< h_disp/5*5) && (pixel_xpos>(h_disp/5*4+duty)))      if((pixel_ypos<v_disp/4*3)&&(pixel_ypos>(v_disp/4*3-5)))pixel_data<= WHITE;else    pixel_data<= BLACK;  else if(pixel_xpos==h_disp/5*5)if((pixel_ypos>v_disp/4)&&(pixel_ypos<v_disp/4*3))pixel_data<= WHITE;else pixel_data<= BLACK;end end
  •   将lcd屏幕测垂直分辨率五等分,每等分的部分显示一个周期的方波,当垂直像素和水平像素达到固定位置时显示该像素点为白色,其余为黑色。
    

基于fpga的方波发生器相关推荐

  1. 基于FPGA实现的MobileNet V1,FPGA深度学习加速器设计 CNN Accelerators based on FPGAs

    Automatic Generation of Multi-precision Multi-arithmetic CNN Accelerators for FPGAs 最近arXiv上挂出来一篇文章, ...

  2. 基于FPGA系统合成两条视频流实现3D视频效果

    目录 1.概述 2.时钟架构 3.带锁定视频解码器的同步系统 4.异步视频系统 4.1.时钟三态模式 4.2.两条视频流中的数据对齐误差 4.3.行锁定摄像机对齐误差 4.4.不同的连接长度 4.5. ...

  3. 基于fpga的数码管动态扫描电路设计_【至简设计案例系列】基于FPGA的密码锁设计(altera版)...

    秦红凯 明德扬FPGA科教 一.项目背景概述 随着生活质量的不断提高,加强家庭防盗安全变得非常重要,但传统机械锁的构造过于简单,很容易被打开,从而降低了安全性.数字密码锁因为它的保密性很高,安全系数也 ...

  4. 快手团队长文解读:基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用...

    来源:机器之心 本文约6000字,建议阅读10分钟 本文介绍了基于FPGA加速的自动语音识别在大规模直播和短视频场景的应用. 典型的实时流式自动语音识别业务如语音搜索.语音输入等和用户操作相关,直接影 ...

  5. FAST:基于FPGA的SDN交换机开源项目

    自1983年自由软件运动领袖Richard Stallman提出了GNU计划以来,开源为软件开发带来了创造性的革命和商业成功.SDN如今的快速发展也离不开开源社区的力量,比如NOX.Floodligh ...

  6. 基于FPGA的以太网开发

      基于FPGA的以太网开发,在调试过的FPGA玩家开来,其实算不上很难的技术!但是如果只是菜鸟级别的选手,没有调试过的话,就有些头疼了!早在自己在实习的时候,就接触到XAUI(万兆以太网口)接口,但 ...

  7. 基于FPGA的SPI FLASH控制器设计

    1.SPI FLASH的基本特征 本文实现用FPGA来设计SPI FLASH,FLASH型号为W25Q128BV.支持3种通信方式,SPI.Dual SPI和Quad SPI.FLASH的存储单元无法 ...

  8. 读论文之《基于 FPGA 的并行全比较排序算法》

    为什么介绍这种排序算法:最近在独立编写霍夫曼编码的verilog HDL设计程序,其中用到了排序模块,对一组数据进行排序,苦寻几天,最终找到了这个全新的适合硬件实现的排序算法,分享与此,以空间换时间的 ...

  9. 基于 FPGA 的并行全比较排序算法,topK

    以空间换时间的并行排序算法. https://blog.csdn.net/Reborn_Lee/article/details/80469391 并行全比较排序算法介绍 排序是一种重要的数据运算,传统 ...

  10. 一种基于FPGA硬件求解对数的简化方法

    本文研究了一种运用FPGA进行数据处理的方法,包括:提取输入数据的高log2M个比特位的数据,作为高有效位,根据预先设置的目标函数的计算表格,查找所述高有效位对应的目标函数值y(n)以及高有效位+1对 ...

最新文章

  1. 宜昌宝塔河项目_宜昌城区首个垃圾分类定时定点投放点启用 厨余垃圾破袋投放...
  2. 增加数据_数据来了!集装箱运量猛增,到底增加了多少!?
  3. 里面怎么定义变量_小哥今天要给朋友们分享一下Java编程语言中的变量与常量的区别...
  4. 下面属于javascript内部对象的有_JavaScript从零开始——面向对象编程(2)
  5. 微信授权,重定向两次
  6. 好久不写日志了,现在开始,好好写了。。
  7. SQL Server 分离
  8. Julia : 关于Atom中的Julia代码排版
  9. 科学计算机弧度怎么读,角度怎么换算(角度换算弧度计算器)
  10. phpcms v9模板制作教程(转载)
  11. 2022新版iApp工具箱源码+有聊天系统等等
  12. lammps案例:石墨烯热导率模拟计算(EMD方法)
  13. 2021-2027中国高效空气过滤器市场现状及未来发展趋势
  14. 【超超超easy】5分钟:自制酷炫猫咪词云图,会点鼠标即可。
  15. excel单元格斜线_最实用的8个Excel操作技巧,1分钟学会!
  16. iOS 微信分享,返回自己的app 闪退
  17. expect spawn scp * shell路径名展开
  18. ln -sf是永久生效的吗linux,ln -s 软连接介绍
  19. excel怎么拆分成多个独立表格文件
  20. moment 与 moment.unix 区别 moment用法

热门文章

  1. 关于北京摇号概率的相关计算
  2. spark+dataframe+小汽车摇号倍率与中签率分析
  3. CRM项目半途而废 “烂摊子”该如何收拾?
  4. Javascript前端模块化
  5. 六、定语从句和关系代词
  6. css3 3d 太阳系,css3太阳系9大行星介绍页面动画
  7. iPhone, iPad, 的Safari书签和阅读列表不同步问题
  8. python问题——ValueError: only 2 non-keyword arguments accepted
  9. 全网疯传,谷歌BAT员工「LeetCode刷题手册」,1400+超详细算法题讲解。
  10. 视频编码fmpeg 常用命令汇总