Deliverable 2 done, robot should just work!

This commit is contained in:
Nanokloon 2025-02-20 00:38:48 +01:00
parent 53a8ffd372
commit 312220a6e6
16 changed files with 228 additions and 56 deletions

View File

@ -5,12 +5,19 @@ QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
Top level modules: Top level modules:
timebase 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 QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
-- Compiling module blinking_led -- Compiling module robot
Top level modules: 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 } {} {}} /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 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: Top level modules:
inputbuffer 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 QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
-- Compiling module robot -- Compiling module blinking_led
Top level modules: 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 } {} {}} /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 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: Top level modules:
robot_tb 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 QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
-- Compiling module controller -- 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
} {} {}}

View File

@ -834,7 +834,7 @@ Resolution = ns
UserTimeUnit = default UserTimeUnit = default
; Default run length ; Default run length
RunLength = 40000010 ns RunLength = 360 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
@ -2110,25 +2110,25 @@ Project_DefaultLib = work
Project_SortMethod = unused Project_SortMethod = unused
Project_Files_Count = 10 Project_Files_Count = 10
Project_File_0 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led.sv 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_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_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_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_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_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_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_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_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_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_Sim_Count = 0
Project_Folder_Count = 0 Project_Folder_Count = 0
Echo_Compile_Output = 0 Echo_Compile_Output = 0

View File

@ -1,2 +1,7 @@
# LineFollower-DSB # LineFollower-DSB
Code for the line follower for the TU Delft course Digital Systems B (24-25) 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.

View File

@ -6,7 +6,7 @@ module controller
input logic sensor_m, input logic sensor_m,
input logic sensor_r, input logic sensor_r,
input logic [?:0] count_in, input logic [20:0] count_in,
output logic count_reset, output logic count_reset,
output logic motor_l_reset, output logic motor_l_reset,
@ -15,7 +15,92 @@ module controller
output logic motor_r_reset, output logic motor_r_reset,
output logic motor_r_direction); 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 endmodule

View File

@ -7,6 +7,25 @@ module inputbuffer
output logic sensor_m_out, output logic sensor_m_out,
output logic sensor_r_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 endmodule

View File

@ -39,10 +39,17 @@ module motorcontrol
else else
next_state = motor_cw; next_state = motor_cw;
end end
default:
begin
if(direction ==? 0)
next_state = motor_ccw;
else
next_state = motor_cw;
end
endcase endcase
end end
always_comb always_comb //PWM logic
begin begin
case(state) case(state)
motor_off: motor_off:

View File

@ -9,6 +9,27 @@ module robot
output logic motor_l_pwm, output logic motor_l_pwm,
output logic motor_r_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 endmodule

View File

@ -2,7 +2,9 @@ module timebase
(input logic clk, (input logic clk,
input logic reset, input logic reset,
output logic [20:0] count); output logic [20:0] count);
logic [20:0] next_count; logic [20:0] next_count;
always_ff @(posedge clk) always_ff @(posedge clk)
begin begin
if(reset) if(reset)

BIN
vsim.wlf

Binary file not shown.

View File

@ -20,7 +20,7 @@ OL;O;10.6g;65
R0 R0
vblinking_led vblinking_led
Z2 DXx6 sv_std 3 std 0 22 AD7iAPLo6nTIKk<N0eo=D3 Z2 DXx6 sv_std 3 std 0 22 AD7iAPLo6nTIKk<N0eo=D3
Z3 !s110 1739990797 Z3 !s110 1740002551
!i10b 1 !i10b 1
!s100 <0lR74YAbCmRiY]YGZE;43 !s100 <0lR74YAbCmRiY]YGZE;43
IZ@z6KWGiBO0`b=]<J44fk3 IZ@z6KWGiBO0`b=]<J44fk3
@ -36,7 +36,7 @@ Z6 OL;L;10.6g;65
r1 r1
!s85 0 !s85 0
31 31
Z7 !s108 1739990797.000000 Z7 !s108 1740002551.000000
!s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led.sv| !s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led.sv|
!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led.sv| !s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led.sv|
!i113 0 !i113 0
@ -66,24 +66,48 @@ R7
!i113 0 !i113 0
R8 R8
R1 R1
vinputbuffer vcontroller
R2 R2
R3 !s110 1740007184
!i10b 1 !i10b 1
!s100 gAG^h3jPRiOJTf@52kK@U1 !s100 ^]X2o_jVn;UT4>:A9b]6F2
I@5mG4@[1iV12]g[J3NNzD3 I^9NA0o7ChWbWHjbYfXSX61
R4 R4
!s105 inputbuffer_sv_unit !s105 controller_sv_unit
S1 S1
R5 R5
w1700473387 w1740007021
8/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.sv 8/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/controller.sv
F/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.sv F/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/controller.sv
L0 1 L0 1
R6 R6
r1 r1
!s85 0 !s85 0
31 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]Rkgn<WH=J3
!s105 inputbuffer_sv_unit
S1
R5
w1739998639
8/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.sv
F/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.sv
L0 1
R6
R7 R7
!s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.sv| !s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.sv|
!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.sv| !s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/inputbuffer.sv|
@ -92,23 +116,23 @@ R8
R1 R1
vmotorcontrol vmotorcontrol
R2 R2
!s110 1739991788 R3
R4 R4
r1 r1
!s85 0 !s85 0
31 31
!i10b 1 !i10b 1
!s100 k2cM=GT9NZBgNUoF9XHnl3 !s100 aj1>J6Zfkm7^10e=3?=n@0
I=832f83EDTlgzkcE=ZF`Y1 Ib=[@B<AHjcIcYePcPPB7I2
!s105 motorcontrol_sv_unit !s105 motorcontrol_sv_unit
S1 S1
R5 R5
w1739991781 w1739999897
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
!s108 1739991788.000000 R7
!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
@ -117,13 +141,10 @@ 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
@ -132,6 +153,9 @@ 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|
@ -141,21 +165,21 @@ R1
vrobot vrobot
R2 R2
R3 R3
!i10b 1
!s100 cQL[Qz1a:2n@ezn[M9FoF2
I05ea<`H7SIdzN4Z]fB>B]0
R4 R4
r1
!s85 0
31
!i10b 1
!s100 mVi_ba`j8N<PSzPBMal]O3
ITC_l9_PEoDlj5@GNF[iln1
!s105 robot_sv_unit !s105 robot_sv_unit
S1 S1
R5 R5
w1700473424 w1739998485
8/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/robot.sv 8/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/robot.sv
F/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/robot.sv F/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/robot.sv
L0 1 L0 1
R6 R6
r1
!s85 0
31
R7 R7
!s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/robot.sv| !s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/robot.sv|
!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/robot.sv| !s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/robot.sv|
@ -165,10 +189,13 @@ R1
vrobot_tb vrobot_tb
R2 R2
R3 R3
R4
r1
!s85 0
31
!i10b 1 !i10b 1
!s100 NZM8Q:n0DD=[0kz35fN@^2 !s100 NZM8Q:n0DD=[0kz35fN@^2
IXL_`E`R4o6WPXd3n0Z1Fc3 IXL_`E`R4o6WPXd3n0Z1Fc3
R4
!s105 robot_tb_sv_unit !s105 robot_tb_sv_unit
S1 S1
R5 R5
@ -177,9 +204,6 @@ w1739890970
F/home/nano/Documents/EE/DS-B/LineFollower-DSB/robot_tb.sv F/home/nano/Documents/EE/DS-B/LineFollower-DSB/robot_tb.sv
L0 3 L0 3
R6 R6
r1
!s85 0
31
R7 R7
!s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/robot_tb.sv| !s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/robot_tb.sv|
!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/robot_tb.sv| !s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/robot_tb.sv|
@ -194,12 +218,12 @@ r1
!s85 0 !s85 0
31 31
!i10b 1 !i10b 1
!s100 g?zcME<Wllkz162]bN]BU2 !s100 Pz`^[M8kl`<`W:HdK5z@n3
IVmaWYU6NiQ<mzZ_G3UP`C1 IU0@eOeBUBo;dgdeW0=I3n0
!s105 timebase_sv_unit !s105 timebase_sv_unit
S1 S1
R5 R5
w1739989530 w1740002498
8/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/timebase.sv 8/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/timebase.sv
F/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/timebase.sv F/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/timebase.sv
L0 1 L0 1

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
work/_lib1_3.qpg Normal file

Binary file not shown.

BIN
work/_lib1_3.qtl Normal file

Binary file not shown.