64 lines
1.6 KiB
Systemverilog

module steuerung (
bus.steuerung_port b, //b.dip[3:0], b.timer, b.clk, b.spi_read[1:0]
led_if.led_port_top i //i.rgb[2:0], i.rgbn[2:0]
);
//dip[3:2] -> select colour, dip[1] -> read ~ 1/write ~ 0, dip[0] -> on ~ 1/off ~ 0
//input wire clk12M, -> b.clk
//input wire rst, -> b.dip[0]
//input wire [1:0] color_sel, -> b.dip[3:2]
//input wire rw, -> b.dip[1]
//output reg REDn, -> i.rgbn[0]
//output reg BLUn, -> i.rgbn[1]
//output reg GRNn, -> i.rgbn[2]
//output reg RED, -> i.rgb[0]
//output reg BLU, -> i.rgb[1]
//output reg GRN -> i.rgb[2]
wire red_pwm;
wire grn_pwm;
wire blu_pwm;
defparam U1.on_hi = 2'b10;
defparam U1.on_lo = 2'b01;
defparam U1.off = 2'b00;
defparam U1.LED_OFF = 2'b00;
defparam U1.RAMP_UP = 2'b01;
defparam U1.LED_ON = 2'b10;
defparam U1.RAMP_DOWN = 2'b11;
defparam U1.on_max_cnt = 28'h16E35ED; // 1 sec steady
defparam U1.Brightness = 4'b0111; // 50% Brightness
defparam U1.BreatheRamp = 4'b0110; // 2x
defparam U1.BlinkRate = 4'b0101; // 1 sec
defparam U2.RGB0_CURRENT = "0b111111";
defparam U2.RGB1_CURRENT = "0b111111";
defparam U2.RGB2_CURRENT = "0b111111";
LED_control1 U1 (.clk12M(b.clk),.rst(b.dip[0]),.color_sel(b.dip[3:2]),.rw(b.dip[1]),.red_pwm(red_pwm),.blu_pwm(blu_pwm),.grn_pwm(grn_pwm));
RGB U2 (.CURREN('b1),.RGB0PWM(blu_pwm),.RGB1PWM(grn_pwm),.RGB2PWM(red_pwm),.RGBLEDEN('b1),.RGB0(i.rgbn[1]),.RGB1(i.rgbn[2]),.RGB2(rgbn[0]));
assign i.rgb[0] = red_pwm;
assign i.rgb[2] = grn_pwm;
assign i.rgb[1] = blu_pwm;
endmodule