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

📄 packforsim.vhd

📁 含有各类寄存器
💻 VHD
字号:
-------------------------------------------------------------------------------

-- 文件名: PackForSimA.vhd

-- Copyright (c) 2002-2003 SVA-Radar信息产品部

-- 创建人: 马骏

-- 日  期: 3.1

-- 修改人:

-- 日  期:

-- 描  述: 雷达模拟器v1.0目标产生模块参数定义

-- 版  本: 1.0

-------------------------------------------------------------------------------






--	Package File Template
--
--	Purpose: This package defines supplemental types, subtypes, 
--		 constants, and functions 


library IEEE;
use IEEE.STD_LOGIC_1164.all;


package PackForSim is

  
--  type <new_type> is
--    record
--        <type_name>        : std_logic_vector( 7 downto 0);
--        <type_name>        : std_logic;
--    end record;

---- Declare constants

--  constant <constant_name>		: time := <time_unit> ns;
--  constant <constant_name>		: integer := <value>;
 
---- Declare functions and procedure

--  function <function_name>  (signal <signal_name> : in <type_declaration>) return <type_declaration>;
--  procedure <procedure_name>	(<type_declaration> <constant_name>	: in <type_declaration>);



--输入时钟频率为38.8395MHz
constant	Crystal					:	integer	:=	38839510;
constant	OneScan					:	integer	:= 97098775;			--Crystal*2.5;



--ClkTrig = CLK_IN = 38.83951MHz时
constant	TrigWidthCnt			:	integer	:=	58;		--共1.5us
constant	Trig1k8Cnt				:	integer	:=	21578;	--21578分频得到1.8k的触发脉冲
constant	Trig1k2Cnt				:	integer	:=	32366;
constant	Trig0k6Cnt				:	integer	:=	64733;
constant	Trig1k3Cnt				:	integer	:=	29877;
constant	Trig0k65Cnt				:	integer	:=	59753;

constant	TrigPeriod1k8			:	integer	:= 21578;	--Crystal/1800
constant	TrigPeriod1k2			:	integer	:= 32366;	--Crystal/1200
constant	TrigPeriod0k6			:	integer	:= 64733;	--Crystal/600
constant	TrigPeriod1k3			:	integer	:= 29877;	--Crystal/1300
constant	TrigPeriod0k65			:	integer	:= 59753;	--Crystal/650

--ClkAzip = CLK_IN = 38.83951MHz时
--constant	AzipWidthCnt			:	integer	:=	233;		--方位脉宽为6us
constant	AzipWidthCnt			:	integer	:=	23300;		--方位脉宽为600us
constant	Azip216Cnt				:	integer	:=	499531;	--38.83951Mhz/(216/2.5)
constant	Azip360Cnt				:	integer	:=	269719;
constant	Azip1080Cnt				:	integer	:=	89906;
constant Azip90Cnt				:	integer	:= 1078872;

--ClkShf = CLK_IN = 38.83951MHz时
constant	ShfWidthCnt				:	integer	:=	388;		--船首标脉宽为10us
constant	ShfCnt					:	integer	:=	97098775;	--38.83951Mhz/(1/2.5)

constant	Range5Nm					:	integer	:=	2397;	--5海里处的一个固定距标圈的距离量化单元数,(5海里x1852)/(150/38.83951)
constant	LineHalfWidth			:	integer	:=	5;			--固定距标圈的线宽

--ClkTrgt频率为38.83951MHz
constant	FixTrgt05vRng			:	integer	:=	1918;		--0.5v固定目标中心的距离量化单元数,以ClkTrgt计数,(4海里x1852)/(150/38.83951)
constant	FixTrgt3vRng			:	integer	:=	959;			--3v固定目标中心的距离量化单元数,以ClkTrgt计数,2海里

constant	FixTrgt05vHalfLength	:	integer	:=	52;			--0.5v固定目标长度计数的一半,长度为400m
constant	FixTrgt3vHalfLength	:	integer	:=	52;				--3v固定目标长度计数的一半
constant	MovTrgtHalfLength		:	integer	:= 52;				--运动目标长度计数的一半

--4个固定目标中心的方位量化单元数,以ClkTrgt计数
constant	FixTrgt1Azip			:	integer	:=	12137347;		--38.83951x2.5x(45/360), pi/4
constant	FixTrgt2Azip			:	integer	:=	36412041;		--38.83951x2.5x(135/360), 3pi/4
constant	FixTrgt3Azip			:	integer	:=	60686734;		--38.83951x2.5x(225/360), 5pi/4
constant	FixTrgt4Azip			:	integer	:=	84961428;		--38.83951x2.5x(315/360), 7pi/4

constant	MaxTrgtBeamNum			:	integer	:=	1000;		--最大的目标波束数为1000,即最大的目标能够收到1000个回波
--constant	FixTrgtBeamHalfNum	:	integer	:=	15;			--固定目标的方位使能长度是30乘以一个触发周期内的时钟脉冲数
--constant	MovTrgtBeamHalfNum	:	integer	:=	15;			--运动目标的方位使能长度是30乘以一个触发周期内的时钟脉冲数
constant	FixTrgtBeamHalfNum	:	integer	:=	10;				--固定目标的方位使能长度是10乘以一个触发周期内的时钟脉冲数
constant	MovTrgtBeamHalfNum	:	integer	:=	10;				--运动目标的方位使能长度是10乘以一个触发周期内的时钟脉冲数

--2个径向运动目标中心的方位量化单元数,以ClkTrgt计数
constant	MovTrgt1Azipa			:	integer	:=	0;			--运动目标1在本船前方时
constant	MovTrgt1Azipb			:	integer	:=	48549388;		--38.83951x2.5x(180/360), pi,运动目标1在本船后方
constant	MovTrgt3Azipa			:	integer	:=	12137347;		--38.83951x2.5x(45/360), pi/4,运动目标3尚未通过本船位置
constant	MovTrgt3Azipb			:	integer	:=	60686734;		--38.83951x2.5x(225/360), 5pi/4,运动目标3已经越过本船位置

--constant	MovTrgt2AzipOrg		:	integer	:=	12137347;	--38.83951x2.5x(45/360), pi/4

--运动目标1走出量程所需的天线周期数
--(8海里/20节)*3600秒/2.5秒 = 576,
--(48海里/20节)*3600秒/2.5秒 = 3456,
--(40海里/20节)*3600秒/2.5秒 = 2880,
--(8海里/21节)*3600秒/2.5秒 = 549,
--(40海里/21节)*3600秒/2.5秒 = 2743
constant	MovTrgt1OutRng			:	integer	:=	549 + 2743;		
constant	MovTrgt1Pass			:	integer	:= 549;				--运动目标1经过本船位置时的天线周期计数
constant	MovTrgt3OutRng			:	integer	:=	549 + 2743;		
constant	MovTrgt3Pass			:	integer	:= 549;				--运动目标3经过本船位置时的天线周期计数

--雷达量程量化单元数
--(40海里x1852)/(150/38.83951) = 19182
--采用最大频率(1800Hz)的触发脉冲时最大的测距范围
--是45海里左右(相邻两触发脉冲之间的原始时钟数目有限),
--因此最大量程定为40海里
--constant	RadarRng					:	integer	:=	23018;			--雷达量程量化单元数,(48海里x1852)/(150/38.83951)
constant	RadarRng					:	integer	:=	19182;				--雷达量程定为40海里

constant	MovTrgt1RngOrg			:	integer	:=	3836;				--运动目标1中心的起始距离量化单元数,8海里
constant	MovTrgt1RngDelta		:	integer	:=	7;					--运动目标1每个天线周期的距离量化增量,这样得到的速度为21节
constant	MovTrgt3RngOrg			:	integer	:=	3836;				--运动目标3中心的起始距离量化单元数,8海里
constant	MovTrgt3RngDelta		:	integer	:=	7;					--运动目标3每个天线周期的距离量化增量,这样得到的速度为21节



--按键去抖动延时
--constant	KeyDelay					:	integer	:=	38839510;			--1s
constant	KeyDelay					:	integer	:=	388395;			--10ms


--八段显示译码,共阳
constant	Code0						:	std_logic_vector(6 downto 0)	:=	"1000000";
constant	Code1						:	std_logic_vector(6 downto 0)	:=	"1111001";
constant	Code2						:	std_logic_vector(6 downto 0)	:=	"0100100";
constant	Code3						:	std_logic_vector(6 downto 0)	:=	"0110000";
constant	Code5						:	std_logic_vector(6 downto 0)	:=	"0010010";
constant	Code6						:	std_logic_vector(6 downto 0)	:=	"0000010";
constant	Code8						:	std_logic_vector(6 downto 0)	:=	"0000000";
constant	Code9						:	std_logic_vector(6 downto 0)	:=	"0010000";
constant	CodeNull					:	std_logic_vector(6 downto 0)	:=	"1111111";


--两组数码管,每组各4个
type	Disp	is	record
	Digit3	:	std_logic_vector(6 downto 0);
	Digit2	:	std_logic_vector(6 downto 0);
	Digit1	:	std_logic_vector(6 downto 0);
	Digit0	:	std_logic_vector(6 downto 0);
end record;

constant	TrigDisp1k3		:	Disp	:=	(Code1, Code3, Code0, Code0);			--1300
constant	TrigDisp0k65	:	Disp	:=	(CodeNull, Code6, Code5, Code0);		--650
constant	TrigDisp1k8		:	Disp	:=	(Code1, Code8, Code0, Code0);			--1800
constant	TrigDisp1k2		:	Disp	:=	(Code1, Code2, Code0, Code0);			--1200
constant	TrigDisp0k6		:	Disp	:=	(CodeNull, Code6, Code0, Code0);		--600

constant	AzipDisp216		:	Disp	:=	(CodeNull, Code2, Code1, Code6);		--216
constant	AzipDisp360		:	Disp	:=	(CodeNull, Code3, Code6, Code0);		--360
constant	AzipDisp1080	:	Disp	:=	(Code1, Code0, Code8, Code0);			--1080



end PackForSim;


⌨️ 快捷键说明

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