Compare commits

..

10 Commits

Author SHA1 Message Date
7d77b821cc testing 2025-02-28 18:20:47 +01:00
1bc23efa66 found the final issue, DONE! 2025-02-27 17:37:18 +01:00
acb6acb34f correctly done 2025-02-27 13:48:28 +01:00
71272dc776 Moore Machine for motor controller 2025-02-20 15:27:14 +01:00
4f0563da8c done 2025-02-20 14:32:22 +01:00
c681f53895 done 2025-02-20 14:31:49 +01:00
ad516ad902 .gitignore 2025-02-20 00:39:33 +01:00
312220a6e6 Deliverable 2 done, robot should just work! 2025-02-20 00:38:48 +01:00
53a8ffd372 Deliverable 1 done! 2025-02-19 20:09:22 +01:00
b9f4a43bdb pain and stuffering 2025-02-19 19:25:47 +01:00
30 changed files with 702 additions and 19 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
/*
.wlf
work/*
!.sv

78
LineFollower.cr.mti Normal file
View File

@ -0,0 +1,78 @@
/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
Top level modules:
blinking_led
} {} {}} /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/robot_tb.sv {1 {vlog -work work -vopt -sv -stats=none /home/nano/Documents/EE/DS-B/LineFollower-DSB/robot_tb.sv
QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
-- Compiling module robot_tb
Top level modules:
robot_tb
} {} {}} /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led_tb.sv {1 {vlog -work work -vopt -sv -stats=none /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led_tb.sv
QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
-- Compiling module blinking_led_tb
Top level modules:
blinking_led_tb
} {} {}} /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
-- Compiling module timebase_tb
Top level modules:
timebase_tb
} {} {}} /home/nano/Documents/EE/DS-B/LineFollower-DSB/motorcontrol_tb.sv {1 {vlog -work work -vopt -sv -stats=none /home/nano/Documents/EE/DS-B/LineFollower-DSB/motorcontrol_tb.sv
QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
-- Compiling module motorcontrol_tb
Top level modules:
motorcontrol_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
} {} {}} /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol_michael.sv {1 {vlog -work work -vopt -sv -stats=none /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol_michael.sv
QuestaSim-64 vlog 10.6g Compiler 2019.08 Aug 2 2019
-- Compiling module motorcontrol_mich
Top level modules:
motorcontrol_mich
} {} {}}

View File

@ -834,7 +834,7 @@ Resolution = ns
UserTimeUnit = default UserTimeUnit = default
; Default run length ; Default run length
RunLength = 100 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
@ -2108,27 +2108,29 @@ suppress = 8780 ;an explanation can be had by running: verror 8780
Project_Version = 6 Project_Version = 6
Project_DefaultLib = work Project_DefaultLib = work
Project_SortMethod = unused Project_SortMethod = unused
Project_Files_Count = 10 Project_Files_Count = 11
Project_File_0 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/timebase.sv Project_File_0 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/timebase.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 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 0 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 1 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_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 vlog_noload 0 last_compile 1740405912 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 9 dont_compile 0 cover_expr 0 cover_stmt 0
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 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 0 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 1 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_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 folder {Top Level} cover_branch 0 cover_fsm 0 last_compile 1740008019 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_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 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 0 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 1 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 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 1740496574 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 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 cover_branch 0 folder {Top Level} last_compile 0 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 1 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_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 1740008019 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_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
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 0 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 1 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_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 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 1739890971 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 0 cover_expr 0 dont_compile 0 cover_stmt 0
Project_File_5 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/timebase_tb.sv Project_File_5 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/timebase_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 cover_fsm 0 last_compile 0 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 1 vlog_0InOptions {} toggle - vlog_options {} compile_to work vlog_upper 0 cover_noshort 0 compile_order 4 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 folder {Top Level} last_compile 1739989146 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 4 dont_compile 0 cover_expr 0 cover_stmt 0
Project_File_6 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/robot_tb.sv Project_File_6 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/robot_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 cover_fsm 0 last_compile 0 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 1 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_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 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 1739890970 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 3 cover_expr 0 dont_compile 0 cover_stmt 0
Project_File_7 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/motorcontrol_tb.sv Project_File_7 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/motorcontrol_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 cover_fsm 0 last_compile 0 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 1 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_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 cover_branch 0 vlog_noload 0 last_compile 1740496451 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 2 cover_expr 0 dont_compile 0 cover_stmt 0
Project_File_8 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led_tb.sv Project_File_8 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led_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 cover_fsm 0 last_compile 0 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 1 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_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 1739890973 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 1 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/motorcontrol_michael.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 vlog_noload 0 cover_branch 0 folder {Top Level} last_compile 0 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 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 cover_branch 0 vlog_noload 0 last_compile 1740495519 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 10 cover_expr 0 dont_compile 0 cover_stmt 0
Project_File_10 = /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/controller.sv
Project_File_P_10 = 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 1740674203 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 5 cover_expr 0 dont_compile 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.
- [x] 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,110 @@ 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;
end
else begin
state <= next_state;
end
end
//state logic
always_comb begin
case(state)
off:
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
sharp_left,
sharp_right,
forward,
gentle_left,
gentle_right:
if(count_in==?2000000) next_state=off;
else next_state=state;
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
always_comb //counter reset logic
begin
if(!(state==?off))
count_reset = 0;
else begin
count_reset = 1;
end
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

@ -1,10 +1,81 @@
module motorcontrol module motorcontrol
(input logic clk, (input logic clk,
input logic reset, input logic reset,
input logic direction, input logic direction,
input logic [?: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;
// 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;
always_ff @(posedge clk) begin
if(reset)
state<=pwm_off;
else
state<= next_state;
end
always_comb begin
case(state)
pwm_off:
begin
pwm=0;
if(count_in ==? 0) begin
next_state=pwm_on;
end
end
pwm_on:
begin
pwm=1;
if((direction ==? 0) && (count_in >= 100000)) begin //CCW
next_state=pwm_off;
end
else if((direction ==? 1) && (count_in >= 200000)) begin //CW
next_state=pwm_off;
end
else
next_state=pwm_on;
end
endcase
end
endmodule endmodule

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

@ -1,8 +1,23 @@
module timebase module timebase
(input logic clk, (input logic clk,
input logic reset, input logic reset,
output logic [?:0] count); output logic [20:0] count);
logic [20:0] next_count;
always_ff @(posedge clk)
begin
if(reset)
count <= 0;
else
count <= next_count;
end
//always_comb begin
// if(count==?2000000)
// next_count=0;
// else
assign next_count = count + 1;
//end
endmodule endmodule

34
entities/timebase.sv.old Normal file
View File

@ -0,0 +1,34 @@
module timebase
(input logic clk,
input logic reset,
output logic [4:0] count);
logic [16:0] internal_count,next_internal_count;
logic [4:0] next_count;
always_ff @(posedge clk) begin
if(reset)begin
count <=0;
internal_count <=0 ;
end
else begin
count <= next_count;
internal_count <= next_internal_count;
end
end
always_comb
begin
if(internal_count ==? 100000) begin
next_internal_count=0;
if(count ==? 19)
next_count = 0;
else
next_count = count+1;
end
else begin
next_internal_count = internal_count+1;
next_count=count;
end
end
endmodule

19
tcl_stacktrace.txt Normal file
View File

@ -0,0 +1,19 @@
Wed Feb 19 19:10:26 CET 2025
Trace back: can't read "tbX(tbf18)": no such element in array
while executing
"lappend orderx($tbX($tb)) $tb"
(object "::.dockbar" method "::mtiwidgets::Dockbar::redoPack" body line 34)
invoked from within
"redoPack {Configure Event}"
("eval" body line 1)
invoked from within
"eval $args"
(object "::.dockbar" method "::mtiwidgets::Dockbar::_delayedEval" body line 3)
invoked from within
"::.dockbar _delayedEval redoPack {Configure Event}"
(in namespace inscope "::mtiwidgets::Dockbar" script line 1)
invoked from within
"namespace inscope ::mtiwidgets::Dockbar ::.dockbar _delayedEval redoPack {Configure Event}"
("after" script)
<2:/home/nano/questaSim/linux_x86_64/tk8.6/bgerror.tcl:106: ::tkerror {can't read "tbX(tbf18)": no such element in array}
<1:eval:1: ::tk::dialog::error::bgerror {can't read "tbX(tbf18)": no such element in array}

View File

@ -1,4 +1,3 @@
`timescale 1ns/1ps `timescale 1ns/1ps
module timebase_tb(); module timebase_tb();

0
transcript Normal file
View File

25
vsim_stacktrace.vstf Normal file
View File

@ -0,0 +1,25 @@
# Current time Wed Feb 19 18:54:44 2025
# Program = vsim
# Id = "10.6g"
# Version = "2019.08"
# Date = "Aug 2 2019"
# Platform = "linux_x86_64"
# Signature = 94b58c929e6acf1df9316e0331d0248a
# 0 0x000000000116b520: '<unknown (@0x116b520)>'
# 1 0x0000000000a8af2e: '<unknown (@0xa8af2e)>'
# 2 0x0000000000a8b12c: '<unknown (@0xa8b12c)>'
# 3 0x0000000000a91176: '<unknown (@0xa91176)>'
# 4 0x000000000120905d: '<unknown (@0x120905d)>'
# 5 0x000000000120d4b6: '<unknown (@0x120d4b6)>'
# 6 0x000000000120eba1: '<unknown (@0x120eba1)>'
# 7 0x000000000120ef06: '<unknown (@0x120ef06)>'
# 8 0x0000000000e8c268: '<unknown (@0xe8c268)>'
# 9 0x00000000012aee0f: '<unknown (@0x12aee0f)>'
# 10 0x0000000001302977: '<unknown (@0x1302977)>'
# 11 0x00000000012c5877: '<unknown (@0x12c5877)>'
# 12 0x00000000012c5b59: '<unknown (@0x12c5b59)>'
# 13 0x000000000111eae6: '<unknown (@0x111eae6)>'
# 14 0x0000000000a57d76: '<unknown (@0xa57d76)>'
# End of Stack Trace

BIN
work/@_opt/_lib.qdb Normal file

Binary file not shown.

BIN
work/@_opt/_lib1_0.qdb Normal file

Binary file not shown.

0
work/@_opt/_lib1_0.qpg Normal file
View File

BIN
work/@_opt/_lib1_0.qtl Normal file

Binary file not shown.

BIN
work/@_opt/_lib2_0.qdb Normal file

Binary file not shown.

0
work/@_opt/_lib2_0.qpg Normal file
View File

BIN
work/@_opt/_lib2_0.qtl Normal file

Binary file not shown.

BIN
work/@_opt/_lib3_0.qdb Normal file

Binary file not shown.

0
work/@_opt/_lib3_0.qpg Normal file
View File

BIN
work/@_opt/_lib3_0.qtl Normal file

Binary file not shown.

BIN
work/@_opt/_lib4_0.qdb Normal file

Binary file not shown.

BIN
work/@_opt/_lib4_0.qpg Normal file

Binary file not shown.

BIN
work/@_opt/_lib4_0.qtl Normal file

Binary file not shown.

View File

@ -7,4 +7,288 @@ z2
!i10e 25 !i10e 25
!i10f 100 !i10f 100
cModel Technology cModel Technology
d/home/nano/Documents/EE/DS-B/randomVerilog Z0 d/home/nano/Documents/EE/DS-B/randomVerilog
T_opt
!s110 1739987669
ViC[Km^Km;LJi>K:R15=cN1
04 11 4 work timebase_tb fast 0
=1-000ae431a4f1-67b61ad5-96700-1d978
Z1 o-quiet -auto_acc_if_foreign -work work +acc
Z2 tCvgOpt 0
n@_opt
Z3 OL;O;10.6g;65
R0
T_opt1
!s110 1740659834
VbSVZT9kHZVJ_HJBf8UmoH0
04 8 4 work robot_tb fast 0
=1-000ae431a4f1-67c05c7a-28bc6-3d26b
R1
R2
n@_opt1
R3
R0
vblinking_led
Z4 DXx6 sv_std 3 std 0 22 AD7iAPLo6nTIKk<N0eo=D3
Z5 !s110 1740576745
!i10b 1
!s100 <0lR74YAbCmRiY]YGZE;43
IZ@z6KWGiBO0`b=]<J44fk3
Z6 VDg1SIo80bB@j0V0VzS_@n1
!s105 blinking_led_sv_unit
S1
Z7 d/home/nano/Documents/EE/DS-B/LineFollower-DSB
w1739890971
8/home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led.sv
F/home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led.sv
L0 1
Z8 OL;L;10.6g;65
r1
!s85 0
31
Z9 !s108 1740576745.000000
!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|
!i113 0
Z10 o-work work -sv -L mtiAvm -L mtiRnm -L mtiOvm -L mtiUvm -L mtiUPF -L infact
R2
vblinking_led_tb
R4
R5
!i10b 1
!s100 Q3Cb0:FE=6?3FlU4cL:E53
IbGOZlE6b2SKV;AZ1k6Koo0
R6
!s105 blinking_led_tb_sv_unit
S1
R7
w1739890973
8/home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led_tb.sv
F/home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led_tb.sv
L0 3
R8
r1
!s85 0
31
R9
!s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led_tb.sv|
!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/blinking_led_tb.sv|
!i113 0
R10
R2
vcontroller
R4
!s110 1740674919
R6
r1
!s85 0
31
!i10b 1
!s100 [oQ2?24BM0UZQ1zIK>L5f1
IDA5>Q3PnE1a@YH]cF7U8B0
!s105 controller_sv_unit
S1
R7
w1740674203
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
R8
!s108 1740674919.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
R10
R2
vinputbuffer
R4
R5
R6
r1
!s85 0
31
!i10b 1
!s100 jh8LQjCKnDA0eIXL[[=Z;1
IAoU:mm@RBCI]Rkgn<WH=J3
!s105 inputbuffer_sv_unit
S1
R7
Z11 w1740008019
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
R8
R9
!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|
!i113 0
R10
R2
vmotorcontrol
R4
R5
R6
r1
!s85 0
31
!i10b 1
!s100 ;emhoV3HFDWaaM1`aeWkc3
If5hJo_lREHS9TNo3?Lhd]1
!s105 motorcontrol_sv_unit
S1
R7
w1740496574
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
R8
R9
!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
R10
R2
vmotorcontrol_mich
R4
R5
!i10b 1
!s100 GloOnCL6^;1ef<?VXFFMV1
IJD<aVk3K;;0ehZLNSD`RP1
R6
!s105 motorcontrol_michael_sv_unit
S1
R7
w1740495519
8/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol_michael.sv
F/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol_michael.sv
L0 1
R8
r1
!s85 0
31
R9
!s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol_michael.sv|
!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/motorcontrol_michael.sv|
!i113 0
R10
R2
vmotorcontrol_tb
R4
R5
!i10b 1
!s100 :B8Yi2Oo;QP<8>OCdD=f33
IR^J9km[@a77RRWkS:_SJk2
R6
!s105 motorcontrol_tb_sv_unit
S1
R7
w1740496451
8/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
R8
r1
!s85 0
31
R9
!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|
!i113 0
R10
R2
vrobot
R4
R5
R6
r1
!s85 0
31
!i10b 1
!s100 mVi_ba`j8N<PSzPBMal]O3
ITC_l9_PEoDlj5@GNF[iln1
!s105 robot_sv_unit
S1
R7
R11
8/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
R8
R9
!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|
!i113 0
R10
R2
vrobot_tb
R4
R5
R6
r1
!s85 0
31
!i10b 1
!s100 NZM8Q:n0DD=[0kz35fN@^2
IXL_`E`R4o6WPXd3n0Z1Fc3
!s105 robot_tb_sv_unit
S1
R7
w1739890970
8/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
R8
R9
!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|
!i113 0
R10
R2
vtimebase
R4
R5
R6
r1
!s85 0
31
!i10b 1
!s100 M[4BXP_R;98<_<a5jJ8Pn3
I]32Z_d:L7GJJ1>Iz^BSQc2
!s105 timebase_sv_unit
S1
R7
w1740405912
8/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
R8
R9
!s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/timebase.sv|
!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/entities/timebase.sv|
!i113 0
R10
R2
vtimebase_tb
R4
R5
!i10b 1
!s100 ZG5RGR?<h9f]acR@9Tboi2
I>VfX@M7fPgCD8V`eeBk_^1
R6
!s105 timebase_tb_sv_unit
S1
R7
w1739989146
8/home/nano/Documents/EE/DS-B/LineFollower-DSB/timebase_tb.sv
F/home/nano/Documents/EE/DS-B/LineFollower-DSB/timebase_tb.sv
L0 3
R8
r1
!s85 0
31
R9
!s107 /home/nano/Documents/EE/DS-B/LineFollower-DSB/timebase_tb.sv|
!s90 -reportprogress|300|-work|work|-vopt|-sv|-stats=none|/home/nano/Documents/EE/DS-B/LineFollower-DSB/timebase_tb.sv|
!i113 0
R10
R2

BIN
work/_lib.qdb Normal file

Binary file not shown.

4
work/_vmake Normal file
View File

@ -0,0 +1,4 @@
m255
K4
z0
cModel Technology