关于数控分频器的设计
谁给我点关于数控分频器的设计的资料或者指导下。。。有原理图和仿真图最好。用quartus 2实现的,没有的用其他软件实现也好。各位高手帮帮忙啊。。谢谢!!! --------------------编程问答-------------------- PROCESS(CLK,CNTER) IS --计数溢出信号控制BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF CNTER=10#19# THEN
NEWCLK<='1';
ELSE
NEWCLK<='0';
END IF;
END IF;
END PROCESS;
END ARCHITECTURE ART;
★ 分频电路的设计
所谓分频电路,就是将一个给定的频率较高的数字输入信号,经过适当的处理后,产生一个或数个频率较低的数字输出信号。分频电路本质上是加法计数器的变种,其计数值由分频常数N=fin/fout决定,其输出不是一般计数器的计数结果,而是根据分频常数对输出信号的高、低电平进行控制。
【例1.3.4】设计一个将1KHZ的方波信号变为正、负周不等的50HZ信号的分频电路的VHDL程序,并使用MAX+plus II进行仿真。
--FJYPF.VHD, 将1KHZ的信号变为50HZ
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY FJYFP IS
PORT(CLK:IN STD_LOGIC; --1KHz信号输入
NEWCLK: OUT STD_LOGIC); --50Hz计时时钟信号输出
END ENTITY FJYFP;
ARCHITECTURE ART OF FJYFP IS
SIGNAL CNTER:INTEGER RANGE 0 TO 10#19#; --十进制计数预置数
BEGIN
PROCESS(CLK) IS --分频计数器,由1KHz时钟产生50Hz信号
BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF CNTER=10#19# THEN
CNTER<=0; --1KHz信号变为50Hz,计数常数为20
ELSE
CNTER<=CNTER+1;
END IF;
END IF;
END PROCESS;
【例1.3.5】设计一个将1KHZ的方波信号变为为正、负周相等的50HZ方波信号的分频电路的VHDL程序,并使用MAX+plus II进行仿真。
--JYFP.VHD, 将1KHZ的信号变为50HZ
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY JYFP IS
PORT( CLK_IN:IN STD_LOGIC;
RESET:IN STD_LOGIC;
CLK_OUT:OUT STD_LOGIC );
END ENTITY JYFP
ARCHITECTURE ART OF JYFP IS
CONSTANT DIVIDE_PERIOD:integer :=20;
--将1KHZ的信号变为50HZ,分频常数为1000/50=20
BEGIN
DIVIDE_CLK:PROCESS(CLK_IN,RESET) IS
VARIABLE CNT:INTEGER RANGE 0 TO 19;
BEGIN
IF (RESET = '1') THEN
CNT := 0;
CLK_OUT <= '0';
ELSIF RISING_EDGE(CLK_IN) THEN
IF (CNT < (DIVIDE_PERIOD/2)) THEN
CLK_OUT <= '1'; -
-前20/2个周期输出为高电平
CNT := CNT + 1;
ELSIF (CNT < (DIVIDE_PERIOD-1)) THEN
CLK_OUT <= '0';
--后20/2个周期输出为低电平
CNT := CNT + 1;
ELSE
CNT := 0;
END IF;
END IF;
END PROCESS DIVIDE_CLK;
END ARCHITECTURE ART;
【例1.3.6】设计一个通用的可输出输入信号的2分频信号、4分频信号、8分频信号、16分频信号、二位2分频信号序列、二位4分频信号序列的分频电路的VHDL程序,并使用MAX+plus II进行仿真。
--TYFP.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY TYFP IS
PORT( CLK_IN:IN STD_LOGIC;
CLK_OUT0,CLK_OUT1,CLK_OUT2,CLK_OUT3:OUT STD_LOGIC;
CLK_OUT21,CLK_OUT32:OUT STD_LOGIC_VECTOR( 1 DOWNTO 0));
END ENTITY TYFP;
ARCHITECTURE ART OF TYFP IS
SIGNAL Q:STD_LOGIC_VECTOR( 4 DOWNTO 0);
BEGIN
PROCESS (CLK_IN) IS
BEGIN
IF CLK_IN'EVENT AND CLK_IN ='1' THEN
Q <= Q+1;
END IF;
END PROCESS;
CLK_OUT0<=Q(0) ; --输出2^(0+1)=2分频信号
CLK_OUT1<=Q(1) ; --输出2^(1+1)=4分频信号
CLK_OUT2<=Q(2) ; --输出2^(2+1)=8分频信号
CLK_OUT3<=Q(3) ; --输出2^(3+1)=16分频信号
CLK_OUT21<=Q(2 DOWNTO 1) ; --输出2^(0+1)=2分频信号序列
CLK_OUT32<=Q(3 DOWNTO 2) ; --输出2^(1+1)=4分频信号序列
END ARCHITECTURE ART;
--------------------编程问答-------------------- 用于数控的任意分频比小数分频器:输入频率5.5~1000MHz,CMOS输出,频率为150Hz~150MHz.
C语言写的PIC18F数控程序,键盘输入,液晶显示,共能产生120000000000000个频率,适用于机床数控.
每台2000元.有兴趣的请联系我:QQ8452998
补充:移动开发 , 英特尔开源软件社区