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

📄 mcualarmmonitor.v

📁 FPGA verilog
💻 V
字号:
module MCUAlarmMonitor
	(
		EN,
		SYS_CLK,
		Ramp,
		PumpDown,
		PUMP_ILDReg,
		PUMP_TMPReg,
		MTReg,
		CTReg,
		REFLECTReg,
		OutputPwr,
		Debounce_Time_Set,
		
		ILD_THR_Set,
		ILD_HYS_Set,
		TMP_THR_Set,
		TMP_HYS_Set,
		MTH_THR_Set,
		MTH_HYS_Set,
		MTL_THR_Set,
		MTL_HYS_Set,
		CT_THR_Set,
		CT_HYS_Set,
		REFLECT_THR_Set,
		REFLECT_HYS_Set,
		
		Pump_Current_Alarm_Output,
		Pump_Temperature_Alarm_Output,
		Coil_Temperature_Alarm_Output,
		Module_Temperature_High_Alarm_Output,
		Module_Temperature_Low_Alarm_Output,
		Reflection_Alarm_Output,
		MT_Protect_Alarm
	);
	
	`include "parameter.v"
	
	input					EN;
	input					SYS_CLK;
	input					Ramp;
	input					PumpDown;
	input 	[31:0]			Debounce_Time_Set;
	input	[31:0]			OutputPwr;
	input 	[31:0]			ILD_THR_Set,
							ILD_HYS_Set,
							TMP_THR_Set,
							TMP_HYS_Set,
							MTH_THR_Set,
							MTH_HYS_Set,
							MTL_THR_Set,
							MTL_HYS_Set,
							CT_THR_Set,
							CT_HYS_Set,
							REFLECT_THR_Set,
							REFLECT_HYS_Set;
							
	input	[31:0]			PUMP_ILDReg;
	input	[31:0]			PUMP_TMPReg;
	input	[31:0]			MTReg;
	input	[31:0]			CTReg;
	input	[31:0]			REFLECTReg;

	output					Pump_Current_Alarm_Output;
	output					Pump_Temperature_Alarm_Output;
	output					Coil_Temperature_Alarm_Output;
	output					Module_Temperature_High_Alarm_Output;
	output					Module_Temperature_Low_Alarm_Output;
	output					Reflection_Alarm_Output;
	output					MT_Protect_Alarm;
	
	reg		[31:0]			PUMP_ILDReg0,PUMP_ILDRegIn;
	reg		[31:0]			PUMP_TMPReg0,PUMP_TMPRegIn;
	reg		[31:0]			MTReg0,MTRegIn;
	reg		[31:0]			CTReg0,CTRegIn;
	reg		[31:0]			REFLECTReg0,REFLECTRegIn;
	wire	[31:0]			RelectionPwr;

	wire					Module_Protect_Temperature_Low_Alarm;
	wire					Module_Protect_Temperature_High_Alarm;

	assign 	MT_Protect_Alarm = Module_Protect_Temperature_Low_Alarm|Module_Protect_Temperature_High_Alarm;

	lpm_sub_signed_32 	Reflect_Sub(.dataa(OutputPwr),
						.datab(REFLECTRegIn),
						.result(RelectionPwr));
							
	GTAlarmMonitor ILDAlarmMonitor(
				.EN(EN),
				.SYS_CLK(SYS_CLK),
				.Param(PUMP_ILDRegIn),
				.Debounce_Time_Set(Debounce_Time_Set),
				.THR_Set(ILD_THR_Set),
				.HYS_Set(ILD_HYS_Set),
				.Alarm_Output(Pump_Current_Alarm_Output)
			);
			
	DOP2AlarmMonitor PumpTAlarmMonitor(
				.EN(EN),
				.SYS_CLK(SYS_CLK),
				.Param(PUMP_TMPRegIn),
				.Debounce_Time_Set(Debounce_Time_Set),
				.Ref(32'd819200),//25
				.THR_Set(TMP_THR_Set),
				.HYS_Set(TMP_HYS_Set),
				.Alarm_Output(Pump_Temperature_Alarm_Output)
			);

	LTAlarmMonitor CTAlarmMonitor(
				.EN(EN),
				.SYS_CLK(SYS_CLK),
				.Param(CTRegIn),
				.Debounce_Time_Set(Debounce_Time_Set),
				.THR_Set(CT_THR_Set),
				.HYS_Set(CT_HYS_Set),
				.Alarm_Output(Coil_Temperature_Alarm_Output)
			);

	ReflectAlarmMonitor ReflectAlarmMonitor(
				.EN(EN),
				.Ramp(Ramp),
				.PumpDown(PumpDown),
				.SYS_CLK(SYS_CLK),
				.Param(RelectionPwr),
				.Debounce_Time_Set(Debounce_Time_Set),
				.THR_Set(REFLECT_THR_Set),
				.HYS_Set(REFLECT_HYS_Set),
				.Alarm_Output(Reflection_Alarm_Output)
			);
			
	GTAlarmMonitor MTHAlarmMonitor(
				.EN(EN),
				.SYS_CLK(SYS_CLK),
				.Param(MTRegIn),
				.Debounce_Time_Set(Debounce_Time_Set),
				.THR_Set(MTH_THR_Set),
				.HYS_Set(MTH_HYS_Set),
				.Alarm_Output(Module_Temperature_High_Alarm_Output)
			);

	LTAlarmMonitor MTLAlarmMonitor(
				.EN(EN),
				.SYS_CLK(SYS_CLK),
				.Param(MTRegIn),
				.Debounce_Time_Set(Debounce_Time_Set),
				.THR_Set(MTL_THR_Set),
				.HYS_Set(MTL_HYS_Set),
				.Alarm_Output(Module_Temperature_Low_Alarm_Output)
			);

	GTAlarmMonitor MTHProtectAlarmMonitor(
				.EN(EN),
				.SYS_CLK(SYS_CLK),
				.Param(MTRegIn),
				.Debounce_Time_Set(Debounce_Time_Set),
				.THR_Set(32'd2785280),//85
				.HYS_Set(MTH_HYS_Set),
				.Alarm_Output(Module_Protect_Temperature_High_Alarm)
			);

	LTAlarmMonitor MTLProtectAlarmMonitor(
				.EN(EN),
				.SYS_CLK(SYS_CLK),
				.Param(MTRegIn),
				.Debounce_Time_Set(Debounce_Time_Set),
				.THR_Set(-32'd327680),
				.HYS_Set(MTL_HYS_Set),
				.Alarm_Output(Module_Protect_Temperature_Low_Alarm)
			);
		
	always @(posedge SYS_CLK)
	begin
		PUMP_ILDReg0 <= PUMP_ILDReg;
		PUMP_TMPReg0 <= PUMP_TMPReg;
		MTReg0 <= MTReg;
		CTReg0 <= CTReg;
		REFLECTReg0 <= REFLECTReg;
	end

	always @(posedge SYS_CLK)
	begin
		PUMP_ILDRegIn <= PUMP_ILDReg0;
		PUMP_TMPRegIn <= PUMP_TMPReg0;
		MTRegIn <= MTReg0;
		CTRegIn <= CTReg0;
		REFLECTRegIn <= REFLECTReg0;
	end
endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -