⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 int_led.v

📁 pci转local bus总线的应用
💻 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 + -