diff --git a/LineFollower.cr.mti b/LineFollower.cr.mti index 28a2f15..c14a983 100644 --- a/LineFollower.cr.mti +++ b/LineFollower.cr.mti @@ -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 -- Compiling module blinking_led @@ -33,4 +54,11 @@ QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019 Top level modules: 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 + } {} {}} diff --git a/LineFollower.mpf b/LineFollower.mpf index 6c4d910..c5c692f 100644 --- a/LineFollower.mpf +++ b/LineFollower.mpf @@ -834,7 +834,7 @@ Resolution = ns UserTimeUnit = default ; Default run length -RunLength = 360 ms +RunLength = 40 ms ; Maximum iterations that can be run without advancing simulation time 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_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_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_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 diff --git a/entities/motorcontrol.sv b/entities/motorcontrol.sv index d11955b..bb0d21d 100644 --- a/entities/motorcontrol.sv +++ b/entities/motorcontrol.sv @@ -6,44 +6,76 @@ module motorcontrol input logic [20:0] count_in, output logic pwm); - typedef enum logic [1:0] { motor_off, motor_cw, motor_ccw } motor_controller_state; - motor_controller_state state,next_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 - always_ff @(posedge clk) - if (reset) - state <= motor_off; + typedef enum logic { pwm_off, pwm_on } motor_controller_state; + motor_controller_state state,next_state; + always_ff @(posedge clk) begin + if(reset) + state<=pwm_off; else - state <= next_state; - - always_comb //state logic - begin - if(direction ==? 0) - next_state = motor_ccw; - else - next_state = motor_cw; + state<= next_state; end - - always_comb //PWM logic - begin + + always_comb begin case(state) - motor_off: + pwm_off: + begin pwm=0; - motor_ccw: - begin - if(count_in <= 100000) - pwm=1; - else - pwm=0; + if(count_in ==? 0) begin + next_state=pwm_on; + end end - motor_cw: + pwm_on: 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 - pwm=0; + next_state=pwm_on; end endcase - end - endmodule diff --git a/work/_info b/work/_info index c7d4365..8352d05 100644 --- a/work/_info +++ b/work/_info @@ -116,23 +116,23 @@ R8 R1 vmotorcontrol R2 -R9 +!s110 1740061324 R4 r1 !s85 0 31 !i10b 1 -!s100 K8[l6@OcQ9YNX==LlIUOX3 -IO?fk96X;Y9oaf[e1kUblg2 +!s100 ;emhoV3HFDWaaM1`aeWkc3 +If5hJo_lREHS9TNo3?Lhd]1 !s105 motorcontrol_sv_unit S1 R5 -w1740057090 +w1740061310 8/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 R6 -R11 +!s108 1740061324.000000 !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| !i113 0 @@ -141,10 +141,13 @@ R1 vmotorcontrol_tb R2 R3 +R4 +r1 +!s85 0 +31 !i10b 1 !s100 :B8Yi2Oo;QP<8>OCdD=f33 IR^J9km[@a77RRWkS:_SJk2 -R4 !s105 motorcontrol_tb_sv_unit S1 R5 @@ -153,9 +156,6 @@ w1739890968 F/home/nano/Documents/EE/DS-B/LineFollower-DSB/motorcontrol_tb.sv L0 3 R6 -r1 -!s85 0 -31 R7 !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| diff --git a/work/_lib.qdb b/work/_lib.qdb index fe8059f..0f5e00c 100644 Binary files a/work/_lib.qdb and b/work/_lib.qdb differ