软件:Quartus
语言:VHDL
代码功能:
占空比检测电路
设计占空比检测代码,可以检测输入信号的占空比。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. Testbench
5. 仿真图
部分代码展示:
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; USE ieee.std_logic_arith.all; ENTITY duty_cycle IS PORT ( clk : IN STD_LOGIC; reset : IN STD_LOGIC; signal_in : IN STD_LOGIC;--输入待测信号 duty : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)--输出占空比 ); END duty_cycle; ARCHITECTURE behave OF duty_cycle IS SIGNAL high_cnt : integer :=100; SIGNAL low_cnt : integer :=100; SIGNAL sync_signal_0 : STD_LOGIC; SIGNAL sync_signal_1 : STD_LOGIC; SIGNAL signal_rise : STD_LOGIC; SIGNAL signal_down : STD_LOGIC; SIGNAL lat_high_cnt : integer :=100; SIGNAL lat_low_cnt : integer :=100; SIGNAL duty_int : integer :=100; SIGNAL duty_int100 : integer :=100; SIGNAL duty_add : integer :=100; BEGIN --输入信号同步到clk信号 PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN sync_signal_0 <= signal_in; sync_signal_1 <= sync_signal_0; END IF; END PROCESS; signal_rise <= sync_signal_0 AND NOT(sync_signal_1);--信号上升沿 signal_down <= NOT(sync_signal_0) AND sync_signal_1;--信号下降沿 PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN IF (sync_signal_0 = '1') THEN high_cnt <= high_cnt + 1;--信号高电平计数 ELSE high_cnt <= 0; END IF; END IF; END PROCESS; PROCESS (clk) BEGIN IF (clk'EVENT AND clk = '1') THEN IF (sync_signal_0 = '0') THEN--信号低电平计数 low_cnt <= low_cnt + 1; ELSE low_cnt <= 0; END IF; END IF; END PROCESS;
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=969
阅读全文
382