Moore Machine for motor controller
This commit is contained in:
parent
4f0563da8c
commit
71272dc776
@ -1,4 +1,25 @@
|
|||||||
/home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led.sv {1 {vlog -work work -vopt -sv -stats=none /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led.sv
|
/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/timebase.sv {1 {vlog -work work -vopt -sv -stats=none /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/timebase.sv
|
||||||
|
QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
|
||||||
|
-- Compiling module timebase
|
||||||
|
|
||||||
|
Top level modules:
|
||||||
|
timebase
|
||||||
|
|
||||||
|
} {} {}} /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/robot.sv {1 {vlog -work work -vopt -sv -stats=none /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/robot.sv
|
||||||
|
QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
|
||||||
|
-- Compiling module robot
|
||||||
|
|
||||||
|
Top level modules:
|
||||||
|
robot
|
||||||
|
|
||||||
|
} {} {}} /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.sv {1 {vlog -work work -vopt -sv -stats=none /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.sv
|
||||||
|
QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
|
||||||
|
-- Compiling module inputbuffer
|
||||||
|
|
||||||
|
Top level modules:
|
||||||
|
inputbuffer
|
||||||
|
|
||||||
|
} {} {}} /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led.sv {1 {vlog -work work -vopt -sv -stats=none /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led.sv
|
||||||
QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
|
QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
|
||||||
-- Compiling module blinking_led
|
-- Compiling module blinking_led
|
||||||
|
|
||||||
@ -33,4 +54,11 @@ QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
|
|||||||
Top level modules:
|
Top level modules:
|
||||||
timebase_tb
|
timebase_tb
|
||||||
|
|
||||||
|
} {} {}} /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/controller.sv {1 {vlog -work work -vopt -sv -stats=none /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/controller.sv
|
||||||
|
QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
|
||||||
|
-- Compiling module controller
|
||||||
|
|
||||||
|
Top level modules:
|
||||||
|
controller
|
||||||
|
|
||||||
} {} {}}
|
} {} {}}
|
||||||
|
|||||||
@ -834,7 +834,7 @@ Resolution = ns
|
|||||||
UserTimeUnit = default
|
UserTimeUnit = default
|
||||||
|
|
||||||
; Default run length
|
; Default run length
|
||||||
RunLength = 360 ms
|
RunLength = 40 ms
|
||||||
|
|
||||||
; Maximum iterations that can be run without advancing simulation time
|
; Maximum iterations that can be run without advancing simulation time
|
||||||
IterationLimit = 10000000
|
IterationLimit = 10000000
|
||||||
@ -2114,7 +2114,7 @@ Project_File_P_0 = cover_toggle 0 vlog_protect 0 file_type systemverilog group_i
|
|||||||
Project_File_1 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/robot.sv
|
Project_File_1 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/robot.sv
|
||||||
Project_File_P_1 = cover_toggle 0 vlog_protect 0 file_type systemverilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 cover_fsm 0 last_compile 1740008019 vlog_noload 0 cover_branch 0 folder {Top Level} vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 8 dont_compile 0 cover_expr 0 cover_stmt 0
|
Project_File_P_1 = cover_toggle 0 vlog_protect 0 file_type systemverilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 cover_fsm 0 last_compile 1740008019 vlog_noload 0 cover_branch 0 folder {Top Level} vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 8 dont_compile 0 cover_expr 0 cover_stmt 0
|
||||||
Project_File_2 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol.sv
|
Project_File_2 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol.sv
|
||||||
Project_File_P_2 = cover_toggle 0 vlog_protect 0 file_type systemverilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 cover_fsm 0 cover_branch 0 vlog_noload 0 last_compile 1740057090 folder {Top Level} cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 7 cover_expr 0 dont_compile 0 cover_stmt 0
|
Project_File_P_2 = cover_toggle 0 vlog_protect 0 file_type systemverilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 cover_fsm 0 cover_branch 0 vlog_noload 0 last_compile 1740061310 folder {Top Level} cover_excludedefault 0 vlog_enable0In 0 vlog_disableopt 0 cover_covercells 0 voptflow 1 cover_optlevel 3 vlog_showsource 0 vlog_hazard 0 toggle - vlog_0InOptions {} ood 0 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 7 cover_expr 0 dont_compile 0 cover_stmt 0
|
||||||
Project_File_3 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.sv
|
Project_File_3 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.sv
|
||||||
Project_File_P_3 = cover_toggle 0 vlog_protect 0 file_type systemverilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1740008019 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 6 dont_compile 0 cover_expr 0 cover_stmt 0
|
Project_File_P_3 = cover_toggle 0 vlog_protect 0 file_type systemverilog group_id 0 cover_exttoggle 0 cover_nofec 0 cover_cond 0 vlog_1995compat SV vlog_nodebug 0 vlog_noload 0 last_compile 1740008019 folder {Top Level} cover_branch 0 cover_fsm 0 vlog_enable0In 0 cover_excludedefault 0 vlog_disableopt 0 cover_covercells 0 vlog_hazard 0 vlog_showsource 0 cover_optlevel 3 voptflow 1 ood 0 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 6 dont_compile 0 cover_expr 0 cover_stmt 0
|
||||||
Project_File_4 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led.sv
|
Project_File_4 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led.sv
|
||||||
|
|||||||
@ -6,44 +6,76 @@ module motorcontrol
|
|||||||
input logic [20:0] count_in,
|
input logic [20:0] count_in,
|
||||||
output logic pwm);
|
output logic pwm);
|
||||||
|
|
||||||
typedef enum logic [1:0] { motor_off, motor_cw, motor_ccw } motor_controller_state;
|
// typedef enum logic [1:0] { motor_off, motor_cw, motor_ccw } motor_controller_state;
|
||||||
motor_controller_state state,next_state;
|
// motor_controller_state state,next_state;
|
||||||
|
//
|
||||||
|
// always_ff @(posedge clk)
|
||||||
|
// if (reset)
|
||||||
|
// state <= motor_off;
|
||||||
|
// else
|
||||||
|
// state <= next_state;
|
||||||
|
//
|
||||||
|
// always_comb //state logic
|
||||||
|
// begin
|
||||||
|
// if(direction ==? 0)
|
||||||
|
// next_state = motor_ccw;
|
||||||
|
// else
|
||||||
|
// next_state = motor_cw;
|
||||||
|
// end
|
||||||
|
//
|
||||||
|
// always_comb //PWM logic
|
||||||
|
// begin
|
||||||
|
// case(state)
|
||||||
|
// motor_off:
|
||||||
|
// pwm=0;
|
||||||
|
// motor_ccw:
|
||||||
|
// begin
|
||||||
|
// if(count_in <= 100000)
|
||||||
|
// pwm=1;
|
||||||
|
// else
|
||||||
|
// pwm=0;
|
||||||
|
// end
|
||||||
|
// motor_cw:
|
||||||
|
// begin
|
||||||
|
// if(count_in <= 200000 )
|
||||||
|
// pwm=1;
|
||||||
|
// else
|
||||||
|
// pwm=0;
|
||||||
|
// end
|
||||||
|
// endcase
|
||||||
|
//
|
||||||
|
// end
|
||||||
|
|
||||||
always_ff @(posedge clk)
|
typedef enum logic { pwm_off, pwm_on } motor_controller_state;
|
||||||
if (reset)
|
motor_controller_state state,next_state;
|
||||||
state <= motor_off;
|
always_ff @(posedge clk) begin
|
||||||
|
if(reset)
|
||||||
|
state<=pwm_off;
|
||||||
else
|
else
|
||||||
state <= next_state;
|
state<= next_state;
|
||||||
|
|
||||||
always_comb //state logic
|
|
||||||
begin
|
|
||||||
if(direction ==? 0)
|
|
||||||
next_state = motor_ccw;
|
|
||||||
else
|
|
||||||
next_state = motor_cw;
|
|
||||||
end
|
end
|
||||||
|
|
||||||
always_comb //PWM logic
|
always_comb begin
|
||||||
begin
|
|
||||||
case(state)
|
case(state)
|
||||||
motor_off:
|
pwm_off:
|
||||||
|
begin
|
||||||
pwm=0;
|
pwm=0;
|
||||||
motor_ccw:
|
if(count_in ==? 0) begin
|
||||||
begin
|
next_state=pwm_on;
|
||||||
if(count_in <= 100000)
|
end
|
||||||
pwm=1;
|
|
||||||
else
|
|
||||||
pwm=0;
|
|
||||||
end
|
end
|
||||||
motor_cw:
|
pwm_on:
|
||||||
begin
|
begin
|
||||||
if(count_in <= 200000 )
|
pwm=1;
|
||||||
pwm=1;
|
if((direction ==? 0) && (count_in >= 100000)) begin //CCW
|
||||||
|
next_state=pwm_off;
|
||||||
|
end
|
||||||
|
else if((direction ==? 1) && (count_in >= 200000)) begin
|
||||||
|
next_state=pwm_off;
|
||||||
|
end
|
||||||
else
|
else
|
||||||
pwm=0;
|
next_state=pwm_on;
|
||||||
end
|
end
|
||||||
endcase
|
endcase
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|||||||
18
work/_info
18
work/_info
@ -116,23 +116,23 @@ R8
|
|||||||
R1
|
R1
|
||||||
vmotorcontrol
|
vmotorcontrol
|
||||||
R2
|
R2
|
||||||
R9
|
!s110 1740061324
|
||||||
R4
|
R4
|
||||||
r1
|
r1
|
||||||
!s85 0
|
!s85 0
|
||||||
31
|
31
|
||||||
!i10b 1
|
!i10b 1
|
||||||
!s100 K8[l6@OcQ9YNX==LlIUOX3
|
!s100 ;emhoV3HFDWaaM1`aeWkc3
|
||||||
IO?fk96X;Y9oaf[e1kUblg2
|
If5hJo_lREHS9TNo3?Lhd]1
|
||||||
!s105 motorcontrol_sv_unit
|
!s105 motorcontrol_sv_unit
|
||||||
S1
|
S1
|
||||||
R5
|
R5
|
||||||
w1740057090
|
w1740061310
|
||||||
8/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol.sv
|
8/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol.sv
|
||||||
F/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol.sv
|
F/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol.sv
|
||||||
L0 2
|
L0 2
|
||||||
R6
|
R6
|
||||||
R11
|
!s108 1740061324.000000
|
||||||
!s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol.sv|
|
!s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol.sv|
|
||||||
!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol.sv|
|
!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol.sv|
|
||||||
!i113 0
|
!i113 0
|
||||||
@ -141,10 +141,13 @@ R1
|
|||||||
vmotorcontrol_tb
|
vmotorcontrol_tb
|
||||||
R2
|
R2
|
||||||
R3
|
R3
|
||||||
|
R4
|
||||||
|
r1
|
||||||
|
!s85 0
|
||||||
|
31
|
||||||
!i10b 1
|
!i10b 1
|
||||||
!s100 :B8Yi2Oo;QP<8>OCdD=f33
|
!s100 :B8Yi2Oo;QP<8>OCdD=f33
|
||||||
IR^J9km[@a77RRWkS:_SJk2
|
IR^J9km[@a77RRWkS:_SJk2
|
||||||
R4
|
|
||||||
!s105 motorcontrol_tb_sv_unit
|
!s105 motorcontrol_tb_sv_unit
|
||||||
S1
|
S1
|
||||||
R5
|
R5
|
||||||
@ -153,9 +156,6 @@ w1739890968
|
|||||||
F/home/nano/Documents/EE/DS-B/LineFollower-DSB/motorcontrol_tb.sv
|
F/home/nano/Documents/EE/DS-B/LineFollower-DSB/motorcontrol_tb.sv
|
||||||
L0 3
|
L0 3
|
||||||
R6
|
R6
|
||||||
r1
|
|
||||||
!s85 0
|
|
||||||
31
|
|
||||||
R7
|
R7
|
||||||
!s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/motorcontrol_tb.sv|
|
!s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/motorcontrol_tb.sv|
|
||||||
!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/motorcontrol_tb.sv|
|
!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/motorcontrol_tb.sv|
|
||||||
|
|||||||
BIN
work/_lib.qdb
BIN
work/_lib.qdb
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user