基于cpld的步进电机控制系统内容摘要:

数据 类型、常量、子程序等。 5 设计库 存放编译过的设计单元 (包括实体说明、结构体、配置说明、程序包等 ), 库中的内容可用作VHDL描述的资源 , 接受其设计单元的访问。 通常 , 以上 5 个部分就是一个完整的VHDL程序应该包含的内容。 3. CPLD设计流程 CPLD即复杂可编程逻辑器件 , 它可以使电子设计工程师在实验室内快速方便地开发专用集成电路 (ASIC )。 CPLD器件的设计流程通常分为设计准备、设计输入、设计验证、布局布线、设计仿真、熔线图生成和下载等步骤。 1 设计准备 设计准备是为了选择合适的CPLD器件。 从逻辑上看 , 首先要考虑器件的I /O资源是否够用 2 设计输入 设计输入是将所设计的电路以开发软件要求的某种形式表达出来 , 并输入计算机 , 如逻辑图和硬件描述语言 (HDL )。 3 设计验证 逻辑设计输入后 , 应对输入的文件进行检验 , 包括语法检验、设计规则检验、逻辑最小化检验、逻辑适配检验和全局设计规则检查。 4 布局布线 此项工作由软件自动完成 , 并能以最优的方式对逻辑元件布局。 5 设计仿真 仿真包括逻辑仿真和时序仿真。 按照开发软件的要求输入一定的测试序列 , 软件可以将这种电 路的这种序列作 用下的输出波形显示出来。 6 熔丝图生成和下载 软件自动生成JEDEC文件 , 并通过下载电缆装入芯片中。 电路构成及各模块功能实现 在此使用 4 相反应式步进电机。 整个电路由 波形信号发生器 ( SQUARE) ,步进电机控制器( MYBJDJ) ,数码 动态显示 ( XIANSHI) ,步进电机方向控制器 ( MYBJDJDIR) 及键盘去抖动电路( JPQDD) 五 个模块 组成。 顶层原理图 如图 9所示。 CLK16M 为时钟信号, RST 为开始 /复位键,通过 SQUARE 模块产生预置的步进脉冲, 步进脉冲 分别 输入 MYBJDJ模块和 XIANSHI 模块,使电机转动相应的步数并 显示出电机转动的步数 ,其中 Y3Y0 输出至功放电路, SPEAK 关喇叭, Q7Q0输出至数码管, MYBJDJDIR 模块控制电机转动方向 , JPQDD 消除键盘按键的弹跳抖动, KEY1 键为步进电机的正 /反转控制。 基于 CPLD 的步进电机控制系统 11 图 9 步进电机控制顶层原理图 CPLD 设计及电路时序 在此 选用 ALTERA公司 FLEX系列的 EPF10K10可编程逻辑电路 芯片 , 整个设计是在 MAX+PLUSⅡ软件下实现的。 采用了电路行为描述手段,分层设计的方法。 底层模块由 VHDL硬件描述语言设计,顶层文件采用图形方 法,完成各个模块间的连接。 步进电机控制 模块 MYBJDJ 模块采用了状态机的方法 ,由两个进程组成,程序如下: Library ieee。 Use。 Use。 Entity mybjdj is port (clk1,rst,dir:in std_logic。 speak:out std_logic。 y:out std_logic_vector(3 downto 0))。 End。 Architecture one of mybjdj is signal t:integer range 0 to 16000000。 signal a:std_logic_vector(3 downto 0)。 signal b:std_logic_vector(3 downto 0)。 type mystate is (st0,st1,st2,st3)。 signal state:mystate。 P1: Process(clk1,rst) begin if rst=39。 039。 then state=st0。 elsif clk139。 event and clk1=39。 139。 then case state is when st0=state=st1。 a=1001。 b=1100。 基于 CPLD 的步进电机控制系统 12 when st1=state=st2。 a=0011。 b=0110。 when st2=state=st3。 a=0110。 b=0011。 when st3=state=st0。 a=1100。 b=1001。 end case。 end if。 end process。 P2: Process(clk1) Begin if(clk139。 event and clk1=39。 139。 ) then if dir=39。 139。 then y=a。 elsif dir=39。 039。 then y=b。 end if。 end if。 End process。 Speak=39。 139。 End。 P1 进程 为控制步进电机的二相激磁方式, VHDL 语言用状态机描述方法设计该模块。 P2 进程为步进电机转动方向的选择,输出 A为正转,输出 B为反转。 波形信号发生 模块 SQUARE 模块 输出脉冲信号 至电机控制模块 作步进脉冲 , 决定步进电机的转步, KEY2, KEY3,KEY4, KEY5 分别为 20 步, 40 步, 70 步, 100 步。 共有三个进程,程序如下: Library ieee。 Use。 Use。 Entity square1 is port (clk16m:in std_logic。 key2,key3,key4,key5:in std_logic。 rst: in std_logic。 qout: out std_logic)。 End。 Architecture one of square1 is signal t:integer range 0 to 16000000。 signal a:std_logic。 signal count:integer range 0 to 255。 signal data:integer range 0 to 255。 signal enb:std_logic。 signal q:std_logic。 Begin 基于 CPLD 的步进电机控制系统 13 Process(clk16m,rst) begin if rst=39。 039。 then a=39。 139。 count=0。 elsif clk16m39。 event and clk16m=39。 139。 then if t16000001 then t=t+1。 t 控制步进电机的转速 else t=0。 a=not a。 count=count+1。 count 计步进电机的转数 end if。 end if。 end process。 Process(clk16m) begin if clk16m39。 event and clk16m=39。 139。 then if count=data then enb=39。 039。 转数超过指定的脉冲数则停止 elsif rst=39。 039。 the。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。