Skip to content

Commit 86307e3

Browse files
arjenroodselaarnathanaelhuffman
authored andcommitted
Ignition: make controller deserialization event mux configurable, diagrams, documentation
1 parent c9bf988 commit 86307e3

9 files changed

+182
-207
lines changed

hdl/ip/bsv/ignition/Ignition Controller Receiver.drawio.svg

Lines changed: 4 additions & 0 deletions
Loading

hdl/ip/bsv/ignition/Ignition Controller.drawio.svg

Lines changed: 4 additions & 0 deletions
Loading

hdl/ip/bsv/ignition/IgnitionController.bsv

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ module mkController #(
277277
// Event handler state
278278
Reg#(EventHandlerState) event_handler_state <- mkReg(AwaitingEvent);
279279
Reg#(EventHandlerState) event_handler_select <- mkRegU();
280-
Reg#(ControllerId#(n)) current_controller <- mkRegU();
280+
Reg#(ControllerId#(n)) controller_id <- mkRegU();
281281

282282
PulseWire tick <- mkPulseWire();
283283
Reg#(UInt#(10)) tick_count <- mkReg(0);
@@ -384,11 +384,11 @@ module mkController #(
384384

385385
function Action count_application_events(
386386
CountableApplicationEvents events) =
387-
event_counters.count_application_events(current_controller, events);
387+
event_counters.count_application_events(controller_id, events);
388388

389389
function Action count_transceiver_events(
390390
CountableTransceiverEvents events) =
391-
event_counters.count_transceiver_events(current_controller, events);
391+
event_counters.count_transceiver_events(controller_id, events);
392392

393393
(* fire_when_enabled *)
394394
rule do_start_event_handler (
@@ -416,7 +416,7 @@ module mkController #(
416416
// setting the id in all register files. This will automatically cause a
417417
// read of each register file on the next clock cycle.
418418
if (maybe_controller_id matches tagged Valid .id) begin
419-
current_controller <= id;
419+
controller_id <= id;
420420

421421
presence.select(id);
422422
transceiver.select(id);
@@ -431,14 +431,14 @@ module mkController #(
431431
target_link1_status.select(id);
432432
target_link1_events.select(id);
433433

434-
event_handler_state <= ReadingRegisters;
434+
event_handler_state <= AwaitingControllerDataValid;
435435
end
436436
endrule
437437

438438
(* fire_when_enabled *)
439439
rule do_read_registers (
440440
init_complete &&
441-
event_handler_state == ReadingRegisters);
441+
event_handler_state == AwaitingControllerDataValid);
442442
// Select the appropriate handler.
443443
event_handler_state <= event_handler_select;
444444
endrule
@@ -515,20 +515,20 @@ module mkController #(
515515

516516
$display("%5t [Controller %02d] Transmitter output enable mode ",
517517
$time,
518-
current_controller,
518+
controller_id,
519519
fshow(transceiver_.transmitter_output_enable_mode));
520520

521521
if (transceiver.transmitter_output_enabled &&
522522
!transceiver_.transmitter_output_enabled) begin
523523
$display("%5t [Controller %02d] Transmitter output disabled",
524524
$time,
525-
current_controller);
525+
controller_id);
526526
end
527527
else if (!transceiver.transmitter_output_enabled &&
528528
transceiver_.transmitter_output_enabled) begin
529529
$display("%5t [Controller %02d] Transmitter output enabled",
530530
$time,
531-
current_controller);
531+
controller_id);
532532
end
533533

534534
// Update the transceiver register. Any changes are applied on
@@ -565,11 +565,11 @@ module mkController #(
565565
maybe_request matches tagged Valid .request) begin
566566
$display("%5t [Controller %02d] Requesting ",
567567
$time,
568-
current_controller, fshow(request));
568+
controller_id, fshow(request));
569569

570570
transmitter_events.enq(
571571
TransmitterEvent {
572-
id: current_controller,
572+
id: controller_id,
573573
ev: tagged Message tagged Request request});
574574

575575
count_application_events(
@@ -612,7 +612,7 @@ module mkController #(
612612
if (presence.status_message_timeout_ticks_remaining == 0) begin
613613
$display("%5t [Controller %02d] Target Status timeout",
614614
$time,
615-
current_controller);
615+
controller_id);
616616

617617
// Add a timeout to the presence history.
618618
presence_.history = shiftInAt0(presence.history, False);
@@ -633,15 +633,15 @@ module mkController #(
633633
if (pack(presence_.history) == 'b000 && presence.present) begin
634634
$display("%5t [Controller %02d] Target not present",
635635
$time,
636-
current_controller);
636+
controller_id);
637637

638638
target_timeout = True;
639639
presence_.present = False;
640640
end
641641

642642
// Write back the presence state.
643643
presence <= presence_;
644-
presence_summary_r[current_controller] <= presence_.present;
644+
presence_summary_r[controller_id] <= presence_.present;
645645

646646
// Count down until the next Hello.
647647
if (hello_timer.ticks_remaining == 0) begin
@@ -675,7 +675,7 @@ module mkController #(
675675
transceiver.transmitter_output_disable_timeout_ticks_remaining == 1) begin
676676
$display("%5t [Controller %02d] Transmitter output disabled",
677677
$time,
678-
current_controller);
678+
controller_id);
679679

680680
transceiver_.transmitter_output_enabled = False;
681681
end
@@ -687,11 +687,11 @@ module mkController #(
687687
if (hello_timer.ticks_remaining == 0) begin
688688
$display("%5t [Controller %02d] Hello",
689689
$time,
690-
current_controller);
690+
controller_id);
691691

692692
transmitter_events.enq(
693693
TransmitterEvent {
694-
id: current_controller,
694+
id: controller_id,
695695
ev: tagged Message tagged Hello});
696696

697697
hello_sent = True;
@@ -703,7 +703,7 @@ module mkController #(
703703
else begin
704704
transmitter_events.enq(
705705
TransmitterEvent {
706-
id: current_controller,
706+
id: controller_id,
707707
ev: tagged OutputEnabled
708708
transceiver_.transmitter_output_enabled});
709709
end
@@ -734,7 +734,7 @@ module mkController #(
734734
tagged TargetStatusReceived: begin
735735
$display("%5t [Controller %02d] Received Status",
736736
$time,
737-
current_controller);
737+
controller_id);
738738

739739
PresenceRegister presence_ = presence;
740740
Bool target_present = False;
@@ -755,15 +755,15 @@ module mkController #(
755755
!presence.present) begin
756756
$display("%5t [Controller %02d] Target present",
757757
$time,
758-
current_controller);
758+
controller_id);
759759

760760
presence_.present = True;
761761
target_present = True;
762762
end
763763

764764
// Write back the presence state.
765765
presence <= presence_;
766-
presence_summary_r[current_controller] <= presence_.present;
766+
presence_summary_r[controller_id] <= presence_.present;
767767

768768
// Update the transmitter output enabled state if configured.
769769
// The actual TransmitterEvent will be sent on the next tick.
@@ -776,7 +776,7 @@ module mkController #(
776776
presence_.present) begin
777777
$display("%5t [Controller %02d] Transmitter output enabled",
778778
$time,
779-
current_controller);
779+
controller_id);
780780

781781
transceiver_.transmitter_output_enabled = True;
782782
transceiver_.transmitter_output_disable_timeout_ticks_remaining = 0;
@@ -798,7 +798,7 @@ module mkController #(
798798
let current = presence_.current_status_message;
799799

800800
event_counters.count_target_link0_events(
801-
current_controller,
801+
controller_id,
802802
determine_transceiver_events(
803803
target_link0_status[previous],
804804
target_link0_status[current],
@@ -815,7 +815,7 @@ module mkController #(
815815
True));
816816

817817
event_counters.count_target_link1_events(
818-
current_controller,
818+
controller_id,
819819
determine_transceiver_events(
820820
target_link1_status[previous],
821821
target_link1_status[current],
@@ -890,7 +890,7 @@ module mkController #(
890890
tagged ReceiverReset: begin
891891
$display("%5t [Controller %02d] Receiver reset",
892892
$time,
893-
current_controller);
893+
controller_id);
894894

895895
TransceiverRegister transceiver_ = transceiver;
896896

@@ -924,7 +924,7 @@ module mkController #(
924924
current_status.receiver_aligned) begin
925925
$display("%5t [Controller %02d] Transmitter output enabled",
926926
$time,
927-
current_controller);
927+
controller_id);
928928

929929
transceiver_.transmitter_output_enabled = True;
930930
transceiver_.transmitter_output_disable_timeout_ticks_remaining = 0;
@@ -1053,7 +1053,7 @@ typedef struct {
10531053

10541054
typedef enum {
10551055
AwaitingEvent = 0,
1056-
ReadingRegisters,
1056+
AwaitingControllerDataValid,
10571057
HandlingSoftwareRequest,
10581058
HandlingTickEvent,
10591059
HandlingReceiverEvent

0 commit comments

Comments
 (0)