diff --git a/LineFollower.cr.mti b/LineFollower.cr.mti index 8c50879..fb1faab 100644 --- a/LineFollower.cr.mti +++ b/LineFollower.cr.mti @@ -5,12 +5,19 @@ QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019 Top level modules: timebase -} {} {}} /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/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 blinking_led +-- Compiling module robot Top level modules: - blinking_led + robot + +} {} {}} /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol.sv {1 {vlog -work work -vopt -sv -stats=none /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol.sv +QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019 +-- Compiling module motorcontrol + +Top level modules: + motorcontrol } {} {}} /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 @@ -19,12 +26,12 @@ QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019 Top level modules: inputbuffer -} {} {}} /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 +} {} {}} /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 robot +-- Compiling module blinking_led Top level modules: - robot + blinking_led } {} {}} /home/nano/Documents/EE/DS-B/LineFollower-DSB/timebase_tb.sv {1 {vlog -work work -vopt -sv -stats=none /home/nano/Documents/EE/DS-B/LineFollower-DSB/timebase_tb.sv QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019 @@ -54,9 +61,11 @@ QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019 Top level modules: robot_tb -} {} {}} /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/controller.sv {0 {vlog -work work -vopt -sv -stats=none /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/controller.sv +} {} {}} /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 -** Error: (vlog-13069) /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/controller.sv(9): near "?": syntax error, unexpected '?'. -} {4.0 5.0} {}} +Top level modules: + controller + +} {} {}} diff --git a/LineFollower.mpf b/LineFollower.mpf index f2f81ef..b0eeef2 100644 --- a/LineFollower.mpf +++ b/LineFollower.mpf @@ -834,7 +834,7 @@ Resolution = ns UserTimeUnit = default ; Default run length -RunLength = 40000010 ns +RunLength = 360 ms ; Maximum iterations that can be run without advancing simulation time IterationLimit = 10000000 @@ -2110,25 +2110,25 @@ Project_DefaultLib = work Project_SortMethod = unused Project_Files_Count = 10 Project_File_0 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led.sv -Project_File_P_0 = 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 folder {Top Level} last_compile 1739890971 cover_fsm 0 cover_branch 0 vlog_noload 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 0 dont_compile 0 cover_expr 0 cover_stmt 0 +Project_File_P_0 = 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 1739890971 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 0 dont_compile 0 cover_expr 0 cover_stmt 0 Project_File_1 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.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 cover_branch 0 vlog_noload 0 last_compile 1700473387 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 6 cover_expr 0 dont_compile 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 cover_branch 0 vlog_noload 0 last_compile 1739998639 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 6 cover_expr 0 dont_compile 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 last_compile 1739991781 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 7 dont_compile 0 cover_expr 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 folder {Top Level} last_compile 1739999897 cover_fsm 0 cover_branch 0 vlog_noload 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 7 dont_compile 0 cover_expr 0 cover_stmt 0 Project_File_3 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/robot.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 cover_fsm 0 cover_branch 0 vlog_noload 0 last_compile 1700473424 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 8 cover_expr 0 dont_compile 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 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1739998485 vlog_noload 0 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 8 cover_expr 0 dont_compile 0 cover_stmt 0 Project_File_4 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/timebase.sv -Project_File_P_4 = 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 1739989530 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 9 dont_compile 0 cover_expr 0 cover_stmt 0 +Project_File_P_4 = 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 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1740002498 vlog_noload 0 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 9 cover_expr 0 dont_compile 0 cover_stmt 0 Project_File_5 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led_tb.sv -Project_File_P_5 = 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 folder {Top Level} last_compile 1739890973 cover_fsm 0 cover_branch 0 vlog_noload 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 1 dont_compile 0 cover_expr 0 cover_stmt 0 +Project_File_P_5 = 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 1739890973 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 1 dont_compile 0 cover_expr 0 cover_stmt 0 Project_File_6 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/motorcontrol_tb.sv -Project_File_P_6 = 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 folder {Top Level} last_compile 1739890968 cover_fsm 0 cover_branch 0 vlog_noload 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 2 dont_compile 0 cover_expr 0 cover_stmt 0 +Project_File_P_6 = 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 1739890968 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 2 dont_compile 0 cover_expr 0 cover_stmt 0 Project_File_7 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/robot_tb.sv -Project_File_P_7 = 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 folder {Top Level} last_compile 1739890970 cover_fsm 0 cover_branch 0 vlog_noload 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 3 dont_compile 0 cover_expr 0 cover_stmt 0 +Project_File_P_7 = 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 1739890970 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 3 dont_compile 0 cover_expr 0 cover_stmt 0 Project_File_8 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/timebase_tb.sv -Project_File_P_8 = 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 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1739989146 vlog_noload 0 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 4 cover_expr 0 dont_compile 0 cover_stmt 0 +Project_File_P_8 = 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 cover_branch 0 folder {Top Level} last_compile 1739989146 cover_fsm 0 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 4 cover_expr 0 dont_compile 0 cover_stmt 0 Project_File_9 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/controller.sv -Project_File_P_9 = 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 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 0 vlog_noload 0 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 1 cover_noshort 0 vlog_upper 0 compile_to work vlog_options {} compile_order 5 cover_expr 0 dont_compile 0 cover_stmt 0 +Project_File_P_9 = 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 1740007021 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 5 dont_compile 0 cover_expr 0 cover_stmt 0 Project_Sim_Count = 0 Project_Folder_Count = 0 Echo_Compile_Output = 0 diff --git a/README.md b/README.md index d30d674..328ae3e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,7 @@ # LineFollower-DSB + Code for the line follower for the TU Delft course Digital Systems B (24-25) + +- [x] Deliverable 1, motor control and timebase. +- [x] Deliverable 2, full integration. +- [ ] Deliverable 3, robot test. diff --git a/entities/controller.sv b/entities/controller.sv index eab61d9..cf9aee9 100644 --- a/entities/controller.sv +++ b/entities/controller.sv @@ -6,7 +6,7 @@ module controller input logic sensor_m, input logic sensor_r, - input logic [?:0] count_in, + input logic [20:0] count_in, output logic count_reset, output logic motor_l_reset, @@ -15,7 +15,92 @@ module controller output logic motor_r_reset, output logic motor_r_direction); + // actual FSM control + typedef enum logic [2:0] { off, sharp_left, gentle_left, forward, gentle_right, sharp_right } controller_state; + controller_state state,next_state; + + always_ff @(posedge clk) begin + if(reset)begin + state <= off; + count_reset<=1; + end + else begin + state <= next_state; + count_reset<=0; + end + end + + //state logic + always_comb begin + case ({sensor_l,sensor_m,sensor_r}) + 3'b000: + next_state = forward; + 3'b001: + next_state = gentle_left; + 3'b010: + next_state = forward; + 3'b011: + next_state = sharp_left; + 3'b100: + next_state = gentle_right; + 3'b101: + next_state = forward; + 3'b110: + next_state = sharp_right; + 3'b111: + next_state = forward; + endcase + end - + //output logic + always_comb begin + case(state) + off: + begin + motor_l_reset=1; + motor_r_reset=1; + end + forward: + begin + motor_l_direction=1; + motor_r_direction=0; + motor_l_reset=0; + motor_r_reset=0; + end + gentle_left: + begin + motor_l_direction=0; + motor_r_direction=0; + motor_l_reset=1; + motor_r_reset=0; + end + sharp_left: + begin + motor_l_direction=0; + motor_r_direction=0; + motor_l_reset=0; + motor_r_reset=0; + end + gentle_right: + begin + motor_l_direction=1; + motor_r_direction=0; + motor_l_reset=0; + motor_r_reset=1; + end + sharp_right: + begin + motor_l_direction=1; + motor_r_direction=1; + motor_l_reset=0; + motor_r_reset=0; + end + default: + begin + motor_l_reset=1; + motor_r_reset=1; + end + endcase + end endmodule diff --git a/entities/inputbuffer.sv b/entities/inputbuffer.sv index 67fcf66..b837d01 100644 --- a/entities/inputbuffer.sv +++ b/entities/inputbuffer.sv @@ -7,6 +7,25 @@ module inputbuffer output logic sensor_m_out, output logic sensor_r_out); + logic [2:0] sensor_reg; + logic buffer_l,buffer_m,buffer_r; + + always_ff @(posedge clk)begin + sensor_reg <= {sensor_l_in,sensor_m_in,sensor_r_in}; + end + + always_ff @(posedge clk)begin + {sensor_l_out,sensor_m_out,sensor_r_out} <= sensor_reg; + end + + //always_ff @(posedge clk)begin + // buffer_l <= sensor_reg[0]; + // buffer_m <= sensor_reg[1]; + // buffer_r <= sensor_reg[2]; + //end + //assign sensor_l_out = buffer_l; + //assign sensor_m_out = buffer_m; + //assign sensor_r_out = buffer_r; endmodule diff --git a/entities/motorcontrol.sv b/entities/motorcontrol.sv index 6d13f5f..89cc4c9 100644 --- a/entities/motorcontrol.sv +++ b/entities/motorcontrol.sv @@ -39,10 +39,17 @@ module motorcontrol else next_state = motor_cw; end + default: + begin + if(direction ==? 0) + next_state = motor_ccw; + else + next_state = motor_cw; + end endcase end - always_comb + always_comb //PWM logic begin case(state) motor_off: diff --git a/entities/robot.sv b/entities/robot.sv index a160c29..6af6d57 100644 --- a/entities/robot.sv +++ b/entities/robot.sv @@ -8,7 +8,28 @@ module robot output logic motor_l_pwm, output logic motor_r_pwm); + + //timebase + logic [20:0] counter; + logic counter_reset; + logic direction_l,direction_r,rst_l,rst_r; + logic sensor_l,sensor_m,sensor_r; + timebase tb(.clk(clk),.reset(counter_reset),.count(counter)); + + //input buffer + inputbuffer ib(.clk(clk), + .sensor_l_in(sensor_l_in),.sensor_m_in(sensor_m_in),.sensor_r_in(sensor_r_in), + .sensor_l_out(sensor_l),.sensor_m_out(sensor_m),.sensor_r_out(sensor_r)); + //controller + controller ctrl(.clk(clk),.reset(reset), + .sensor_l(sensor_l),.sensor_m(sensor_m),.sensor_r(sensor_r), + .count_in(counter),.count_reset(counter_reset), + .motor_l_reset(rst_l),.motor_l_direction(direction_l), + .motor_r_reset(rst_r),.motor_r_direction(direction_r)); + // motor control + motorcontrol mc_l (.clk(clk),.reset(rst_l),.direction(direction_l),.count_in(counter),.pwm(motor_l_pwm)); + motorcontrol mc_r (.clk(clk),.reset(rst_r),.direction(direction_r),.count_in(counter),.pwm(motor_r_pwm)); endmodule diff --git a/entities/timebase.sv b/entities/timebase.sv index 3c2af86..6df4e4c 100644 --- a/entities/timebase.sv +++ b/entities/timebase.sv @@ -2,7 +2,9 @@ module timebase (input logic clk, input logic reset, output logic [20:0] count); + logic [20:0] next_count; + always_ff @(posedge clk) begin if(reset) diff --git a/vsim.wlf b/vsim.wlf deleted file mode 100644 index f919b2e..0000000 Binary files a/vsim.wlf and /dev/null differ diff --git a/work/_info b/work/_info index 95aa5b0..1889427 100644 --- a/work/_info +++ b/work/_info @@ -20,7 +20,7 @@ OL;O;10.6g;65 R0 vblinking_led Z2 DXx6 sv_std 3 std 0 22 AD7iAPLo6nTIKk:A9b]6F2 +I^9NA0o7ChWbWHjbYfXSX61 R4 -!s105 inputbuffer_sv_unit +!s105 controller_sv_unit S1 R5 -w1700473387 -8/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.sv -F/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.sv +w1740007021 +8/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/controller.sv +F/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/controller.sv L0 1 R6 r1 !s85 0 31 +!s108 1740007184.000000 +!s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/controller.sv| +!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/controller.sv| +!i113 0 +R8 +R1 +vinputbuffer +R2 +R3 +R4 +r1 +!s85 0 +31 +!i10b 1 +!s100 jh8LQjCKnDA0eIXL[[=Z;1 +IAoU:mm@RBCI]RkgnJ6Zfkm7^10e=3?=n@0 +Ib=[@BOCdD=f33 IR^J9km[@a77RRWkS:_SJk2 +R4 !s105 motorcontrol_tb_sv_unit S1 R5 @@ -132,6 +153,9 @@ 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| @@ -141,21 +165,21 @@ R1 vrobot R2 R3 -!i10b 1 -!s100 cQL[Qz1a:2n@ezn[M9FoF2 -I05ea<`H7SIdzN4Z]fB>B]0 R4 +r1 +!s85 0 +31 +!i10b 1 +!s100 mVi_ba`j8N