📄 int_led.v
字号:
module INT_LED(
clk33m,
clk1hz,
clk4hz,
clk16khz,
reset_n,
int_mask,
int_clear,
int_state,
fpga_int,
bcm5464_int,
bcm5248_int,
card_present,
alarm_led,
role_led,
run_led,
led_reg
);
input clk33m;
input clk1hz;
input clk4hz;
input clk16khz;
input reset_n;
input [1:0] card_present;
reg [1:0] card_present_dy;
reg [1:0] card_present_dy1;
wire [1:0] card_prsnt;
reg [1:0] card_prsnt_reg;
assign card_prsnt = card_present_dy1;
reg card_int;
output fpga_int;
input [3:0] bcm5248_int;
input [3:0] bcm5464_int;
input [15:0] int_mask;
input [15:0] int_clear;
output [15:0] int_state;
reg [15:0] int_state;
wire bcm5248_int0;
wire bcm5248_int1;
wire bcm5248_int2;
wire bcm5248_int3;
wire bcm5464_int0;
wire bcm5464_int1;
wire bcm5464_int2;
wire bcm5464_int3;
assign bcm5248_int0 = bcm5248_int[0] || int_mask[1];
assign bcm5248_int1 = bcm5248_int[1] || int_mask[2];
assign bcm5248_int2 = bcm5248_int[2] || int_mask[3];
assign bcm5248_int3 = bcm5248_int[3] || int_mask[4];
assign bcm5464_int0 = bcm5464_int[0] || int_mask[5];
assign bcm5464_int1 = bcm5464_int[1] || int_mask[6];
assign bcm5464_int2 = bcm5464_int[2] || int_mask[7];
assign bcm5464_int3 = bcm5464_int[3] || int_mask[8];
assign fpga_int = bcm5464_int3 & bcm5464_int2 & bcm5464_int1 & bcm5464_int0
& bcm5248_int3 & bcm5248_int2 & bcm5248_int1 & bcm5248_int0 ;//& card_int;
wire clear1,clear2,clear3,clear4,clear5,clear6,clear7,clear8;
assign clear1 = int_clear[0] & reset_n;
assign clear2 = int_clear[1] & reset_n;
assign clear3 = int_clear[2] & reset_n;
assign clear4 = int_clear[3] & reset_n;
assign clear5 = int_clear[4] & reset_n;
assign clear6 = int_clear[5] & reset_n;
assign clear7 = int_clear[6] & reset_n;
assign clear8 = int_clear[7] & reset_n;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
/////////// jitter clear ///////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
always @(posedge clk1hz)
begin
card_present_dy <= card_present;
card_present_dy1 <= card_present_dy;
end
////////////////////////////////////////////////////////////////////
/////////// interubt generate //////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
always @(posedge clk1hz or negedge reset_n)
begin
if(!reset_n)
begin
card_prsnt_reg <= 5'h0;
card_int <= 1'b1;
end
else
begin
card_prsnt_reg <= ~card_prsnt;
if(card_prsnt_reg != ~card_prsnt)
card_int <= int_mask[0];
else
card_int <= 1'b1;
end
end
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
/////// interubt state generate and interubt state clear ///////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////
always @(negedge bcm5248_int0 or negedge clear1)
if(!clear1) int_state[0] <= 1'b0; else int_state[0] <= 1'b1;
always @(negedge bcm5248_int1 or negedge clear2)
if(!clear2) int_state[1] <= 1'b0; else int_state[1] <= 1'b1;
always @(negedge bcm5248_int2 or negedge clear3)
if(!clear3) int_state[2] <= 1'b0; else int_state[2] <= 1'b1;
always @(negedge bcm5248_int3 or negedge clear4)
if(!clear4) int_state[3] <= 1'b0; else int_state[3] <= 1'b1;
always @(negedge bcm5464_int0 or negedge clear5)
if(!clear5) int_state[4] <= 1'b0; else int_state[4] <= 1'b1;
always @(negedge bcm5464_int1 or negedge clear6)
if(!clear6) int_state[5] <= 1'b0; else int_state[5] <= 1'b1;
always @(negedge bcm5464_int2 or negedge clear7)
if(!clear7) int_state[6] <= 1'b0; else int_state[6] <= 1'b1;
always @(negedge bcm5464_int3 or negedge clear8)
if(!clear8) int_state[7] <= 1'b0; else int_state[7] <= 1'b1;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
///////////////// LED Control ////////////////////////
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
output alarm_led;
output role_led;
output run_led;
input [4:0] led_reg;
assign alarm_led = led_reg[2];
assign role_led = led_reg[1];
assign run_led = (led_reg[0])? clk1hz : clk4hz;
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -