Skip to content

Commit 0bc7fc9

Browse files
committed
Merge pull request #18 from paulcox/master
bugfix and support for two motors
2 parents b88b1ba + dc14c4e commit 0bc7fc9

File tree

1 file changed

+39
-21
lines changed

1 file changed

+39
-21
lines changed

logi-motor-control/hw/logibone/hdl/logibone_motor_control.vhd

Lines changed: 39 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,11 @@ end component;
9393

9494

9595
-- my logic
96-
signal encoder_count, encoder_control, encoder_speed: std_logic_vector(15 downto 0);
97-
signal CHAN_A, CHAN_B : std_logic ;
98-
signal pwm_sig : std_logic ;
96+
signal encoder_count0, encoder_control, encoder_speed0: std_logic_vector(15 downto 0);
97+
signal encoder_count1, encoder_speed1: std_logic_vector(15 downto 0);
98+
signal CHAN_A0, CHAN_B0 : std_logic ;
99+
signal CHAN_A1, CHAN_B1 : std_logic ;
100+
signal pwm_sig0,pwm_sig1 : std_logic ;
99101
signal dir_control : std_logic_vector(15 downto 0);
100102

101103
signal loop_back : std_logic_vector(15 downto 0);
@@ -196,8 +198,8 @@ wbs_ack => Intercon_0_wbm_REG0_0_wbs.ack,
196198
reg_out(0)(15 downto 0) => encoder_control,
197199
reg_out(1)(15 downto 0) => dir_control,
198200
reg_out(2) => loop_back,
199-
reg_in(0)(15 downto 0) => encoder_count,
200-
reg_in(1)(15 downto 0) => encoder_speed,
201+
reg_in(0)(15 downto 0) => encoder_count0,
202+
reg_in(1)(15 downto 0) => encoder_count1,
201203
reg_in(2) => loop_back
202204
);
203205

@@ -206,20 +208,35 @@ enc0 : encoder_interface
206208
generic map(FREQ_DIV => 100)
207209
port map(
208210
clk => gls_clk, reset => gls_reset,
209-
channel_a => CHAN_A,
210-
channel_b => CHAN_B,
211+
channel_a => CHAN_A0,
212+
channel_b => CHAN_B0,
211213

212-
period => encoder_speed,
214+
period => encoder_speed0,
213215
pv => open,
214216

215-
count => encoder_count,
217+
count => encoder_count0,
216218
reset_count => encoder_control(0)
217219

218220
);
219221

222+
enc1 : encoder_interface
223+
generic map(FREQ_DIV => 100)
224+
port map(
225+
clk => gls_clk, reset => gls_reset,
226+
channel_a => CHAN_A1,
227+
channel_b => CHAN_B1,
228+
229+
period => encoder_speed1,
230+
pv => open,
231+
232+
count => encoder_count1,
233+
reset_count => encoder_control(8)
234+
235+
);
236+
220237

221238
PWM_0 : wishbone_pwm
222-
generic map( nb_chan => 1)
239+
generic map( nb_chan => 2)
223240
port map(
224241
-- Syscon signals
225242
gls_clk => gls_clk, gls_reset => gls_reset,
@@ -232,26 +249,27 @@ port map(
232249
wbs_write => Intercon_0_wbm_PWM_0_wbs.write,
233250
wbs_ack => Intercon_0_wbm_PWM_0_wbs.ack,
234251

235-
pwm_out(0) => pwm_sig
252+
pwm_out(0) => pwm_sig0,
253+
pwm_out(1) => pwm_sig1
236254
);
237255

238256

239257
LED(0) <= BEAT_0_beat_out_top_LED;
240-
LED(1) <= pwm_sig;
258+
LED(1) <= pwm_sig0;
241259

242260
-- Connecting inouts
243261

244-
245-
CHAN_B <= PMOD1(3);
246-
CHAN_A <= PMOD1(2);
247-
--'Z' <= PMOD1(7);
248-
PMOD1(0) <= pwm_sig;
249-
PMOD1(1) <= dir_control(0);
262+
CHAN_A0 <= PMOD1(2);
263+
CHAN_B0 <= PMOD1(3);
264+
PMOD1(0) <= dir_control(0);
265+
PMOD1(1) <= pwm_sig0;
250266
PMOD1(7 downto 4) <= (others => 'Z');
251-
PMOD2(7 downto 0) <= (others => 'Z');
252-
253-
254267

268+
CHAN_A1 <= PMOD2(2);
269+
CHAN_B1 <= PMOD2(3);
270+
PMOD2(0) <= dir_control(8);
271+
PMOD2(1) <= pwm_sig1;
272+
PMOD2(7 downto 4) <= (others => 'Z');
255273

256274

257275

0 commit comments

Comments
 (0)