• 正文
  • 相关推荐
申请入驻 产业图谱

频率测量系统的设计VHDL代码Xilinx ISE仿真

10小时前
102
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

软件:Xilinx ISE

语言:VHDL

代码功能

该频率测量系统基于FPGA实现,主要功能包括频率控制、数据存储LED显示。系统支持多档位频率控制,通过gear信号选择不同的频率范围。频率控制模块产生使能信号复位信号和锁存信号,用于控制外部测量电路。LED显示模块采用动态扫描技术,驱动6位数码管显示测量结果,支持不同档位下的显示格式调整。

代码实现思路

系统采用VHDL语言设计,包含频率控制模块和LED显示模块。频率控制模块根据档位选择不同的计数最大值,产生周期性的控制信号。LED显示模块接收8个4位数据输入,通过动态扫描方式依次显示在6位数码管上。系统采用状态机设计,确保各模块协同工作,实现精确的频率测量和显示功能。

代码结构

系统采用模块化设计

- Frq_Ctrl.vhd - 频率控制模块,产生控制信号

- LED_DISP.vhd - LED显示模块,驱动数码管显示

- clk_div.vhd - 时钟分频模块

- counter.vhd - 计数器模块

- data_store.vhd - 数据存储模块

- test_sig.vhd - 测试信号生成模块

各模块分工明确,协同完成频率测量任务。

部分代码

-- 频率控制模块

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_unsigned.all;

 

ENTITY Frq_Ctrl IS

PORT (

clk   : IN STD_LOGIC;

en    : OUT STD_LOGIC;

gear  : IN STD_LOGIC_VECTOR(1 DOWNTO 0);

rst   : OUT STD_LOGIC;

lat   : OUT STD_LOGIC

);

END Frq_Ctrl;

 

ARCHITECTURE behave OF Frq_Ctrl IS

SIGNAL ctrl_cnt : STD_LOGIC_VECTOR(26 DOWNTO 0) := "010111001011001001111000000";

SIGNAL max_num  : STD_LOGIC_VECTOR(26 DOWNTO 0) := "010110111000110110000000000";

BEGIN

-- 档位选择

PROCESS (clk)

BEGIN

IF (clk'EVENT AND clk = '1') THEN

CASE gear IS

WHEN "00" =>

max_num <= "010110111000110110000000000";

WHEN "01" =>

max_num <= "000010010010011111000000000";

WHEN "10" =>

max_num <= "000000001110101001100000000";

WHEN "11" =>

max_num <= "010110111000110110000000000";

WHEN others => NULL;

END CASE;

END IF;

END PROCESS;

 

-- 计数器控制

PROCESS (clk)

BEGIN

IF (clk'EVENT AND clk = '1') THEN

IF (ctrl_cnt >= max_num + "000000000000000000111110100") THEN

ctrl_cnt <= "000000000000000000000000000";

ELSE

ctrl_cnt <= ctrl_cnt + "000000000000000000000000001";

END IF;

END IF;

END PROCESS;

 

-- 输出信号生成

en <= '1' WHEN (ctrl_cnt < max_num) ELSE

'0';

rst <= '1' WHEN (ctrl_cnt > max_num + "000000000000000000100101100"

AND ctrl_cnt < max_num + "000000000000000000110010000") ELSE

'0';

lat <= '1' WHEN (ctrl_cnt > max_num + "000000000000000000001100100"

AND ctrl_cnt < max_num + "000000000000000000011001000") ELSE

'0';

END behave;

 

【来源:www.hdlcode.com
赛灵思

赛灵思

赛灵思(英语:Xilinx)是一家位于美国的可编程逻辑器件的生产商。该公司发明了现场可编程逻辑门阵列,并由此成名。赛灵思还是第一个无厂半导体公司(Fabless)。28nm时代,赛灵思提出All Programmable 的概念,从单一的FPGA企业战略转型为All Programmable FPGA、 SoC 和 3D IC 的全球领先提供商。且行业领先的器件与新一代设计环境以及 IP 完美地整合在一起,可满足客户对可编程逻辑乃至可编程系统集成的广泛需求赛灵思于1984年创建于美国加利福尼亚州的硅谷,总部位于硅谷核心的圣何塞,并在科罗拉多州、爱尔兰、新加坡 印度、中国、日本拥有分支机构

赛灵思(英语:Xilinx)是一家位于美国的可编程逻辑器件的生产商。该公司发明了现场可编程逻辑门阵列,并由此成名。赛灵思还是第一个无厂半导体公司(Fabless)。28nm时代,赛灵思提出All Programmable 的概念,从单一的FPGA企业战略转型为All Programmable FPGA、 SoC 和 3D IC 的全球领先提供商。且行业领先的器件与新一代设计环境以及 IP 完美地整合在一起,可满足客户对可编程逻辑乃至可编程系统集成的广泛需求赛灵思于1984年创建于美国加利福尼亚州的硅谷,总部位于硅谷核心的圣何塞,并在科罗拉多州、爱尔兰、新加坡 印度、中国、日本拥有分支机构收起

查看更多

相关推荐

登录即可解锁
  • 海量技术文章
  • 设计资源下载
  • 产业链客户资源
  • 写文章/发需求
立即登录