┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊
参考文献2010届毕业设计6月7日修改版
参考文献
[1] 改进逐点比较法圆弧插补的研究与仿真_唐慧锋2006 年第22 卷第5-3 期
[2] 基于FPGA的数控数字积分法圆弧插补器的设计与实现_周保廷2005,27(5):16~18 [3] 基于FPGA的数控逐点比较法直线插补数字系统设计与实现( 2001) 06- 0045- 05 [4] 基于FPGA的数字积分法圆弧插补器的设计与实现_陈黎融( 2008) 02) 0058) 03 [5] 基于FPGA的硬圆弧插补器设计_秦兴( 2002) 5- 104- 2 [6] 基于FPGA技术的数控插补器算法改进研究 [7] 基于PC的逐点比较法插补控制程序设计 [8] 逐点比较法第一象限直线圆弧插补 [9] 逐点比较法顺圆弧插补 [10] 逐点比较算法圆弧插补
共 25 页 第 17 页
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊
程序清单2010届毕业设计6月7日修改版
程序清单
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PUL IS
PORT(G : IN STD_LOGIC;
XE : IN Integer RANGE -32768 TO 32767; YE : IN Integer RANGE -32768 TO 32767; CLK : IN STD_LOGIC; XDIR : OUT STD_LOGIC; YDIR : OUT STD_LOGIC; XP : OUT STD_LOGIC; YP : OUT STD_LOGIC); END PUL;
ARCHITECTURE sample OF PUL IS SIGNAL PUL:STD_LOGIC; SIGNAL XCP:STD_LOGIC; SIGNAL YCP:STD_LOGIC;
SIGNAL XXE: Integer RANGE 0 TO 65535; SIGNAL YYE: Integer RANGE 0 TO 65535; BEGIN
XP<=XCP AND CLK; YP<=YCP AND CLK; P1:PROCESS(XXE,YYE) VARIABLE XXDIR: STD_LOGIC; VARIABLE YYDIR: STD_LOGIC;
VARIABLE TXE: Integer RANGE 0 TO 65535; VARIABLE TYE: Integer RANGE 0 TO 65535; BEGIN
共 25 页 第 18 页
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊
程序清单2010届毕业设计6月7日修改版
IF XE<0 THEN XXDIR:='1'; TXE:=-XE; ELSE
XXDIR:='0'; TXE:=XE; END IF; IF YE<0 THEN YYDIR:='1'; TYE:=-YE; ELSE
YYDIR:='0'; TYE:=YE; END IF; XDIR<=XXDIR; YDIR<=YYDIR; XXE<=TXE; YYE<=TYE; END PROCESS P1; P2:PROCESS(G,PUL)
VARIABLE xx:Integer RANGE 0 TO 65535; VARIABLE yy:Integer RANGE 0 TO 65535; VARIABLE F:Integer; VARIABLE NUM:Integer; VARIABLE YG:STD_LOGIC; VARIABLE XG:STD_LOGIC; BEGIN
IF G='1' THEN XX:=XXE; YY:=YYE; F:=0;
NUM:=abs(XE)+abs(YE);
共 25 页 第 19 页
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊
程序清单2010届毕业设计6月7日修改版
elsIF PUL'EVENT AND PUL='1' THEN IF NUM/=0 then IF(F<0)then yy:=yy-1; YG:='1'; XG:='0'; F:=F+XXE; else xx:=xx-1; YG:='0'; XG:='1'; F:=F-YYE; END IF; NUM:=NUM-1; ELSE YG:='0'; XG:='0'; END IF; END IF;
XCP<=XG AND PUL; YCP<=YG AND PUL; END PROCESS P2; P3:PROCESS(CLK)
VARIABLE CP:STD_LOGIC; BEGIN
if CLK'EVENT AND CLK='0' THEN CP:=NOT(CP); END IF; PUL<=CP; END PROCESS P3; END sample;
共 25 页 第 20 页
┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ 装 ┊ ┊ ┊ ┊ ┊ 订 ┊ ┊ ┊ ┊ ┊ 线 ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊ ┊
程序清单2010届毕业设计6月7日修改版
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY APUL IS
PORT(G : IN STD_LOGIC;
XS : IN Integer RANGE -32768 TO 32767; YS : IN Integer RANGE -32768 TO 32767; XE : IN Integer RANGE -32768 TO 32767; YE : IN Integer RANGE -32768 TO 32767; CLK : IN STD_LOGIC; XDIR : OUT STD_LOGIC; YDIR : OUT STD_LOGIC; XP : OUT STD_LOGIC; YP : OUT STD_LOGIC); END APUL;
ARCHITECTURE sample OF APUL IS SIGNAL XCP:STD_LOGIC; SIGNAL YCP:STD_LOGIC; SIGNAL CLCK:STD_LOGIC;
SIGNAL XXS: Integer RANGE 0 TO 65535; SIGNAL YYS: Integer RANGE 0 TO 65535; SIGNAL XXE: Integer RANGE 0 TO 65535; SIGNAL YYE: Integer RANGE 0 TO 65535; BEGIN
XP<=XCP AND CLK; YP<=YCP AND CLK;
P1:PROCESS(XXE,YYE,XXS,YYS) VARIABLE XXDIR: STD_LOGIC; VARIABLE YYDIR: STD_LOGIC;
VARIABLE TXS: Integer RANGE 0 TO 65535; VARIABLE TYS: Integer RANGE 0 TO 65535;
共 25 页 第 21 页