当前位置: 首页 > news >正文

FPGA分频电路设计(2)

实验要求:
采用 4 个开关以二进制形式设定分频系数(1-10),实现对已知信号的分频。

类似实验我之前做过一次,但那次的方法实在是太笨了:
利用VHDL实现一定系数范围内的信号分频电路
需要重做以便将来应对更大的分频系数

先画个图分析下:
在这里插入图片描述
做偶数系数的分频,你只要关注上升沿或下降沿中的其中一种即可,但如果是奇数系数分频,你必须同时关注两种变化。
我的代码:

library ieee ;
use ieee.std_logic_1164.all ;
use ieee.std_logic_arith.all ;
use ieee.std_logic_unsigned.all ;
use ieee.numeric_std.all ;entity Division2 is port (input : in std_logic ;sw : in std_logic_vector(3 downto 0) ;output : buffer std_logic) ;
end Division2 ;architecture divide of Division2 issignal mid : std_logic := '0' ;signal midt : std_logic := '0' ;signal num : integer := 0 ;
beginprocess(input, sw, mid, midt)variable upside : integer := 0 ;	-- how many rising edges ?variable downside : integer := 0 ;	-- how many falling edges ?beginnum <= conv_integer(sw) ;			-- this function can change vector to integerif rising_edge(input) thenupside := upside + 1 ;if (num MOD 2 = 1) thenif ((upside = ((num + 1)/2)) or ((upside - ((num + 1)/2)) MOD num = 0)) thenmid <= NOT mid ;end if ;end if ;elsif falling_edge(input) thendownside := downside + 1 ;if ((num MOD 2 = 0) and (num>0)) thenif (downside MOD (num/2) = 0) thenmidt <= NOT midt ;end if ;elsif (num MOD 2 = 1) thenif (downside MOD num = 0) thenmidt <= NOT midt ;end if ;end if ;end if ;output <= mid xor midt ;end process ;end divide ;

参考资料:
VHDL和Verilog中数组定义、初始化、赋值方法
FPGA之道(27)VHDL的操作符号
VHDL VHDL语言中buffer与inout的区别
(关于VHDL中的buffer,我以后还需要查阅专业资料进一步学习)
quartusⅡ中出现的警告及原因(不断收集中…)
VHDL vector转integer
在VHDL中,可以使用conv_integer函数将std_logic_vector类型转换成整数

http://www.lryc.cn/news/267998.html

相关文章:

  • 【三】【C语言\动态规划】珠宝的最高价值、下降路径最小和、最小路径和,三道题目深度解析
  • 爬虫工作量由小到大的思维转变---<第二十八章 Scrapy中间件说明书>
  • 从Maven初级到高级
  • orangepi--开发板配置网络SSH登录
  • 简单通讯录管理系统第4关:简单通讯录管理系统之修改通讯录用户信息
  • macOS编译ckb-next
  • 漏刻有时数据可视化Echarts组件开发(46)散点图颜色判断
  • 智能优化算法应用:基于驾驶训练算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 【论文阅读】MCANet: Medical Image Segmentation with Multi-Scale Cross-Axis Attention
  • 机器视觉实战应用:手势、人脸、动作以及手势鼠标构建(一)
  • python作业题百度网盘,python作业答案怎么查
  • centos7.9中离线安装nginx开启ssl,arm架构
  • LENOVO联想笔记本小新Pro 14 IRH8 2023款(83AL)电脑原装出厂Win11系统恢复预装OEM系统
  • blender使用faceit绑定自己的表情动作
  • 有关List的线程安全、高效读取:不变模式下的CopyOnWriteArrayList类、数据共享通道:BlockingQueue
  • OCC服务器和BCC服务器中文件同步
  • 工具系列:TimeGPT_(2)使用外生变量时间序列预测
  • 应用于前端的自然断点法:wasm应用示例
  • web前端javaScript笔记——(6)数组
  • vue的props
  • 【51单片机系列】DS18B20温度传感器模块
  • ubuntu20.04 conda环境配置Mask2former记录
  • Git更新远程分支
  • 2023年软件工程师工作总结范文
  • STM32实战之深入理解I²C通信协议
  • 如何区分ChatGPT 3.5与ChatGPT 4:洞悉智能对话的新时代
  • blender scripting 编写
  • 使用 Elasticsearch 检测抄袭 (二)
  • WPF DataGrid
  • 【cesium-5】鼠标交互与数据查询