Moore Machine for motor controller

This commit is contained in:
Nanokloon 2025-02-20 15:27:14 +01:00
parent 4f0563da8c
commit 71272dc776
5 changed files with 101 additions and 41 deletions

View File

@ -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
} {} {}} } {} {}}

View File

@ -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

View File

@ -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;
//
// 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
typedef enum logic { pwm_off, pwm_on } motor_controller_state;
motor_controller_state state,next_state; motor_controller_state state,next_state;
always_ff @(posedge clk) begin
always_ff @(posedge clk) if(reset)
if (reset) state<=pwm_off;
state <= motor_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:
pwm=0;
motor_ccw:
begin begin
if(count_in <= 100000)
pwm=1;
else
pwm=0; pwm=0;
if(count_in ==? 0) begin
next_state=pwm_on;
end end
motor_cw: end
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

View File

@ -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|

Binary file not shown.