二、控制信号接口
2.1、控制信号定义
PUL+/+5V:步进脉冲信号输入正端或正向步进脉冲信号输入正端
PUL-:步进脉冲信号输入负端或正向步进脉冲信号输入负端
DIR/+5V: 步进方向信号输入正端或反向步进脉冲信号输入正端
DIR -: 步进方向信号输入负端或反向步进脉冲信号输入负端
ENB/+5V: 脱机使能复位信号输入正端
ENB-: 脱机使能复位信号输入负端
脱机使能信号有效时复位驱动器故障,禁止任何有效的脉冲,驱动器的输出功率元件被关闭,电机无保持
扭矩。
2.2、电机绕组连接
A+:连接电机绕组 A+相。
A-:连接电机绕组 A-相。
B+:连接电机绕组 B+相。
B-:连接电机绕组 B-相。
2.3、电源电压连接
VCC:电源正端“+”
GND:电源负端“-”
注意:DC 直流范围:20-50V,不能超过此范围,否则会无法正常工作,甚至损坏驱动器
2.4、控制信号连接
上位机的控制信号可以高电平有效,可以低电平有效,也可以是差分信号。当高有效时,把所有控制信
号的负端连在一起作为信号地,低有效时,把所有控制信号的正端肆顷搏连在一起作为信号公共端,当差分控制
信号时,驱动器脉乎枣冲的正负,方向裂祥的正负信号分开接入上位机中。
注意:VCC值为5V 时,控制器与驱动器直接连接;
VCC 值为12V 时,R为1K,大于1/8W 电阻;
VCC 值为24V 时,R为2K,大于1/8W 电阻。
R 必须接在控制器信号端。
1、理论知识实现方法:将数字量转换为模拟量,根据输出数字量的大小转换为模拟量以实现信号幅值的变化。
具体思路:提前声明一个ROM IP核,将正弦波、三角板、方波和锯齿波的数字量写入进去,或者也可以自己用Verilog写一个ROM,ROM作为只读的一个存储器,在声明的时候需要提前将数据写入到ROM中,然后给定其一个地址,便会输出该地址所对应的数据以实现信号波形的输出。
根据思路进行举例说明:
若要实现一个正弦波的输出,提前将ROM的深度定义为1024,宽度定义桥郑岁为10位宽。则ROM中有1024个数据,每个数据的位宽为10位二进制,这1024个数据代表了一个正弦波。
由于位宽为10位,则输出幅值的最大值为2^10-1=1023,最小为0,具体如下图
同理可以实现三角波、方波、锯齿波。
2、具体实践
目标:用Vivado中的ROM IP核,实现正弦波、三角波、方波、锯齿波的输出。
第一步 生成波形数据
可以使用mif精灵,或者matlab生成一个coe文丛桐件,文件内容格式具体如下图:
第二步 定义ROM IP核
定义一个但端口的ROM IP核,一个波形深度为1024,则存放四个波形的深度需要4096,对应的地址位为12位。
然后将第一步生成的coe文件写入ROM中。
第三步 编写源文件代码并调用IP核
具体源文件代码如下
module wave4_rom(
input wire sys_clk,
input wire ena,
input wire [11:0] addr,
input wire [9:0] data_out
)
//调用第二步生成的ROM IP核
sinwave_rom inst1 (
.clka(sys_clk),// input wire clka
.ena(ena), // input wire ena
.addra(addr), // input wire [11 : 0] addra
.douta(data_out) // output wire [9 : 0] douta
)
endmodule
登录后复制
第四步 编写仿真代码
仿真代码如下:
`timescale 1ns / 1ns
module tb_wave4_rom()
reg sys_clk
reg ena
reg [11:0] addr
wire [9:0] data_out
initial
begin
sys_clk=1'b1
ena<=1'b0
#200
ena<=1'b1
end
always #10 sys_clk=~sys_clk
always@(posedge sys_clk or negedge ena)
if(ena==1'b0)
addr<=12'd0
else if(addr==12'd4095)
addr<=12'd0
else
addr<=addr+1'b1
//实例化源文件
wave4_rom inst1(
.sys_clk (sys_clk) ,
.ena (ena) ,
.addr (addr) ,
.data_out (data_out)
)
endmodule
登录后复制
Vivado仿真波形
整体波形如下
方波的数据只有1023和0
3、拓展训练
可以使用FPGA的按键控制四种波形的输出,需要使用到按键消抖模块。
也可敏睁以进行输出波形的频率和相位调制,实现一个简易的DDS信号发生器。具体实现原理图如下
图中所展示的四大结构中,相位累加器是整个 DDS 的核心,在这里完成相位累加,生成相位码。相位累加器的输入为频率字输入 K,表示相位增量,设其位宽为 N,满足等式K = 2^N * fOUT / fCLK 。其在输入相位累加器之前,在系统时钟同步下做数据寄存,数据改变时不会干扰相位累加器的正常工作。
通过改变频率字输入和相位字输入实现输出波形频率和相位的调节。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)