Deliverable 2 done, robot should just work!
This commit is contained in:
parent
53a8ffd372
commit
312220a6e6
@ -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
|
||||
|
||||
} {} {}}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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.
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -9,6 +9,27 @@ 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
|
||||
|
||||
@ -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)
|
||||
|
||||
90
work/_info
90
work/_info
@ -20,7 +20,7 @@ OL;O;10.6g;65
|
||||
R0
|
||||
vblinking_led
|
||||
Z2 DXx6 sv_std 3 std 0 22 AD7iAPLo6nTIKk<N0eo=D3
|
||||
Z3 !s110 1739990797
|
||||
Z3 !s110 1740002551
|
||||
!i10b 1
|
||||
!s100 <0lR74YAbCmRiY]YGZE;43
|
||||
IZ@z6KWGiBO0`b=]<J44fk3
|
||||
@ -36,7 +36,7 @@ Z6 OL;L;10.6g;65
|
||||
r1
|
||||
!s85 0
|
||||
31
|
||||
Z7 !s108 1739990797.000000
|
||||
Z7 !s108 1740002551.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
|
||||
@ -66,24 +66,48 @@ R7
|
||||
!i113 0
|
||||
R8
|
||||
R1
|
||||
vinputbuffer
|
||||
vcontroller
|
||||
R2
|
||||
R3
|
||||
!s110 1740007184
|
||||
!i10b 1
|
||||
!s100 gAG^h3jPRiOJTf@52kK@U1
|
||||
I@5mG4@[1iV12]g[J3NNzD3
|
||||
!s100 ^]X2o_jVn;UT4>: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]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
|
||||
!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|
|
||||
@ -92,23 +116,23 @@ R8
|
||||
R1
|
||||
vmotorcontrol
|
||||
R2
|
||||
!s110 1739991788
|
||||
R3
|
||||
R4
|
||||
r1
|
||||
!s85 0
|
||||
31
|
||||
!i10b 1
|
||||
!s100 k2cM=GT9NZBgNUoF9XHnl3
|
||||
I=832f83EDTlgzkcE=ZF`Y1
|
||||
!s100 aj1>J6Zfkm7^10e=3?=n@0
|
||||
Ib=[@B<AHjcIcYePcPPB7I2
|
||||
!s105 motorcontrol_sv_unit
|
||||
S1
|
||||
R5
|
||||
w1739991781
|
||||
w1739999897
|
||||
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
|
||||
!s108 1739991788.000000
|
||||
R7
|
||||
!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
|
||||
@ -117,13 +141,10 @@ 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
|
||||
@ -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<PSzPBMal]O3
|
||||
ITC_l9_PEoDlj5@GNF[iln1
|
||||
!s105 robot_sv_unit
|
||||
S1
|
||||
R5
|
||||
w1700473424
|
||||
w1739998485
|
||||
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
|
||||
R6
|
||||
r1
|
||||
!s85 0
|
||||
31
|
||||
R7
|
||||
!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|
|
||||
@ -165,10 +189,13 @@ R1
|
||||
vrobot_tb
|
||||
R2
|
||||
R3
|
||||
R4
|
||||
r1
|
||||
!s85 0
|
||||
31
|
||||
!i10b 1
|
||||
!s100 NZM8Q:n0DD=[0kz35fN@^2
|
||||
IXL_`E`R4o6WPXd3n0Z1Fc3
|
||||
R4
|
||||
!s105 robot_tb_sv_unit
|
||||
S1
|
||||
R5
|
||||
@ -177,9 +204,6 @@ w1739890970
|
||||
F/home/nano/Documents/EE/DS-B/LineFollower-DSB/robot_tb.sv
|
||||
L0 3
|
||||
R6
|
||||
r1
|
||||
!s85 0
|
||||
31
|
||||
R7
|
||||
!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|
|
||||
@ -194,12 +218,12 @@ r1
|
||||
!s85 0
|
||||
31
|
||||
!i10b 1
|
||||
!s100 g?zcME<Wllkz162]bN]BU2
|
||||
IVmaWYU6NiQ<mzZ_G3UP`C1
|
||||
!s100 Pz`^[M8kl`<`W:HdK5z@n3
|
||||
IU0@eOeBUBo;dgdeW0=I3n0
|
||||
!s105 timebase_sv_unit
|
||||
S1
|
||||
R5
|
||||
w1739989530
|
||||
w1740002498
|
||||
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
|
||||
|
||||
BIN
work/_lib.qdb
BIN
work/_lib.qdb
Binary file not shown.
BIN
work/_lib1_1.qpg
BIN
work/_lib1_1.qpg
Binary file not shown.
BIN
work/_lib1_1.qtl
BIN
work/_lib1_1.qtl
Binary file not shown.
Binary file not shown.
BIN
work/_lib1_3.qpg
Normal file
BIN
work/_lib1_3.qpg
Normal file
Binary file not shown.
BIN
work/_lib1_3.qtl
Normal file
BIN
work/_lib1_3.qtl
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user