summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaptor Engineering Development Team <support@raptorengineering.com>2018-01-17 06:43:12 -0600
committerRaptor Engineering Development Team <support@raptorengineering.com>2018-01-17 06:46:40 -0600
commit1ea8951b542ffebb30a44b898d4d13117cbe5e37 (patch)
tree4745a8408bba69fc427971b084123fe5ed969197
parente10d94582b51846cba9a93c6c9a698c49ff6fdf2 (diff)
downloadtalos-system-fpga-1ea8951b542ffebb30a44b898d4d13117cbe5e37.tar.gz
talos-system-fpga-1ea8951b542ffebb30a44b898d4d13117cbe5e37.zip
Correct polarity of BMC boot complete signal
Use fading startup pattern instead of prior KR pattern
-rw-r--r--main.v46
-rw-r--r--system_fpga.pcf2
2 files changed, 39 insertions, 9 deletions
diff --git a/main.v b/main.v
index b535f05..2ffb23a 100644
--- a/main.v
+++ b/main.v
@@ -65,7 +65,7 @@ module system_fpga_top
// Resets
output reg lpc_rst,
- input wire bmc_software_pg,
+ input wire bmc_boot_complete_n,
output reg bmc_rst,
output reg fan_rst,
output reg usbhub_rst,
@@ -263,6 +263,7 @@ module system_fpga_top
wire panel_nic2_led_cathode_std;
wire panel_uid_led_std;
reg [2:0] bmc_startup_kr = 3'b000;
+ reg [2:0] bmc_startup_fader = 3'b000;
// Implement nasty ring oscillator for fallback use when main system clock is offline
// Thanks to Clifford Wolf for the idea and basic code!
@@ -355,7 +356,36 @@ module system_fpga_top
end
endcase
end
-
+
+ // Generate fading lamp test for front panel
+ wire fader_clk;
+ reg [12:0] fader_clk_counter;
+ always @(posedge clk_in) begin
+ fader_clk_counter <= fader_clk_counter + 1;
+ end
+ assign fader_clk = fader_clk_counter[12];
+
+ reg [5:0] fader_pwm_level = 0;
+ reg [6:0] fader_pwm_internal_counter = 0;
+ always @(posedge fader_clk) begin
+ fader_pwm_internal_counter = fader_pwm_internal_counter + 1;
+ if (fader_pwm_internal_counter >= 64) begin
+ fader_pwm_level = 63 - (fader_pwm_internal_counter - 64);
+ end else begin
+ fader_pwm_level = fader_pwm_internal_counter;
+ end
+ end
+
+ reg [5:0] fader_pwm_counter = 0;
+ always @(posedge clk_in) begin
+ fader_pwm_counter = fader_pwm_counter + 1;
+ if (fader_pwm_counter >= fader_pwm_level) begin
+ bmc_startup_fader = 3'b000;
+ end else begin
+ bmc_startup_fader = 3'b111;
+ end
+ end
+
assign i2c_rst = 1'b0;
// Handle I2C
// 2 8-bit registers with PGOOD state on error
@@ -753,7 +783,7 @@ module system_fpga_top
// System PWRGOOD
always @(posedge clk_in) begin
sysgood_buf = delay_done[14];
- sysgood = sysgood_buf & bmc_software_pg;
+ sysgood = sysgood_buf & ~bmc_boot_complete_n;
lpc_rst = sysgood_buf;
end
@@ -765,7 +795,7 @@ module system_fpga_top
// BMC RESETs
always @(posedge clk_in) begin
bmc_rst = bmc_vr_pg;
- usbhub_rst = sysgood_buf & bmc_software_pg;
+ usbhub_rst = sysgood_buf & ~bmc_boot_complete_n;
fan_rst = bmc_vr_pg;
end
@@ -803,14 +833,14 @@ module system_fpga_top
// Assign front panel indicators according to BMC status
always @(posedge clk_in) begin
- if (bmc_software_pg) begin
+ if (!bmc_boot_complete_n) begin
panel_nic1_led_cathode = panel_nic1_led_cathode_std;
panel_nic2_led_cathode = panel_nic2_led_cathode_std;
panel_uid_led = panel_uid_led_std;
end else begin
- panel_nic1_led_cathode = bmc_startup_kr[0];
- panel_nic2_led_cathode = bmc_startup_kr[1];
- panel_uid_led = bmc_startup_kr[2];
+ panel_nic1_led_cathode = bmc_startup_fader[0];
+ panel_nic2_led_cathode = bmc_startup_fader[1];
+ panel_uid_led = bmc_startup_fader[2];
end
end
diff --git a/system_fpga.pcf b/system_fpga.pcf
index ce653c6..29c5879 100644
--- a/system_fpga.pcf
+++ b/system_fpga.pcf
@@ -85,7 +85,7 @@ set_io cpub_clk_oeb 9
# Resets
set_io lpc_rst 82
-set_io bmc_software_pg 8
+set_io bmc_boot_complete_n 8
set_io bmc_rst 83
set_io fan_rst 1
set_io usbhub_rst 87
OpenPOWER on IntegriCloud