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

📄 workone.v

📁 Verilog实现的DDS正弦信号发生器和测频测相模块
💻 V
字号:
module TopLayer
(
/* 启动信号,系统时钟及待测信号输入 */
Reset,
MeasureStart,
SysClock,
WaveInOne,
WaveInTwo,
/* 频率和相位差预置及调节输入 */
Select,
Increase,
Decrease,
Double,
Halve,
/* 测量数据输出 */
ReadClock,
DataOut,
ReadyFlag,
LeadFlag,
/* DDS正弦波输出 */
ClockOut,
WaveOutOne,
WaveOutTwo,
/* BUS方向选择输出 */
U4Dir,
U5Dir,
U6Dir,
U7Dir,
U9Dir,
U10Dir,
U11Dir,
/* 指示灯输出 */
LED0,
LED1,
LED2,
LED3
);
(* chip_pin = "134" *) input Reset;
(* chip_pin = "132" *)input MeasureStart;
(* chip_pin = "17" *)input SysClock;
(* chip_pin = "62" *)input WaveInOne;
(* chip_pin = "47" *)input WaveInTwo;
//(* chip_pin = "27" *)input Select;
//(* chip_pin = "31" *)input Increase;
//(* chip_pin = "34" *)input Decrease;
//(* chip_pin = "36" *)input Double;
//(* chip_pin = "38" *)input Halve;
//(* chip_pin = "40" *)input ReadClock;
(* chip_pin = "140" *)input Select;
(* chip_pin = "142" *)input Increase;
(* chip_pin = "144" *)input Decrease;
(* chip_pin = "3" *)input Double;
(* chip_pin = "6" *)input Halve;
(* chip_pin = "10" *)input ReadClock;
//(* chip_pin = "141" *)output DataOut;
(* chip_pin = "141" *)output DataOut;
(* chip_pin = "139" *)output ReadyFlag;
(* chip_pin = "143" *)output LeadFlag;
//(* chip_pin = "28" *)output ClockOut;
(* chip_pin = "28" *)output ClockOut;
(* chip_pin = "77, 75, 73, 71, 96, 91, 84, 82, 78, 76, 74, 72" *)output [11:0] WaveOutOne;
(* chip_pin = "79, 83, 85, 94, 113, 111, 109, 107, 105, 103, 99, 97" *)output [11:0] WaveOutTwo;
(* chip_pin = "49" *)output U4Dir;
(* chip_pin = "48" *)output U5Dir;
(* chip_pin = "37" *)output U6Dir;
(* chip_pin = "41" *)output U7Dir;
(* chip_pin = "35" *)output U9Dir;
(* chip_pin = "33" *)output U10Dir;
(* chip_pin = "42" *)output U11Dir;
(* chip_pin = "1" *)output LED0;
(* chip_pin = "5" *)output LED1;
(* chip_pin = "11" *)output LED2;
(* chip_pin = "32" *)output LED3;

//input Reset;
//input MeasureStart;
//input SysClock;
//input WaveInOne;
//input WaveInTwo;
//input Select;
//input Increase;
//input Decrease;
//input Double;
//input Halve;
//input ReadClock;
//output DataOut;
//output ReadyFlag;
//output LeadFlag;
//output ClockOut;
//output [11:0] WaveOutOne;
//output [11:0] WaveOutTwo;
//output U4Dir;
//output U5Dir;
//output U6Dir;
//output U7Dir;
//output U9Dir;
//output U10Dir;
//output U11Dir;
//output LED0;
//output LED1;
//output LED2;
//output LED3;

//reg rLED3;
//assign LED3 = rLED3;

//always @ (posedge ReadClock)
//begin
//  rLED3 <= ~rLED3;
//end

/* 指定BUS方向 */
assign U4Dir = 1;
assign U5Dir = 1;
assign U6Dir = 1;
assign U7Dir = 0;
assign U9Dir = 1;
assign U10Dir = 1;
assign U11Dir = 0;


/* 调节输出信号的频率和相位差 */
wire [9:0] OutFrequency;
wire [8:0] OutPhase;
Adjust AdjustU0(.Reset(Reset),
				.ScanClcok(SysClock),
				.Select(Select),
				.Increase(Increase),
				.Decrease(Decrease),
				.Double(Double),
				.Halve(Halve),
				.SetFrequency(OutFrequency),
				.SetPhase(OutPhase),
				.IndicatorLight(LED2)
				);

/* 数值变换 */
wire [21:0] OutFrequencyKey;
wire [9:0] OutPhaseKey;
Adapter AdapterU0(.Clock(SysClock),
				  .FrequencySet(OutFrequency),
				  .PhaseSet(OutPhase),
				  .FrequencyKey(OutFrequencyKey),
				  .PhaseKey(OutPhaseKey)
				  );
				
/* 产生两路正弦波 */
DDS DDSU0(.Clock(SysClock),
		  .FrequencyKey(OutFrequencyKey),
		  .PhaseKey(OutPhaseKey),
		  .ClockOut(ClockOut),
		  .WaveOutOne(WaveOutOne),
	      .WaveOutTwo(WaveOutTwo)
		  );	
		
/* 相位超前检测 */
DFF PhasaeLeadJudge(.d(WaveInOne),
                    .clk(WaveInTwo), 
                    .clrn(1),
                    .prn(1),
                    .q(LeadFlag)
                    );			

///* 倍频系统时钟 */
//wire SysClockPLL;
//PLL PLLU0(.inclk0(SysClock),
//	      .c0(SysClockPLL)
//	      );

/* 数据测量 */
wire [31:0] FreClockCounter;
wire [31:0] FreWaveCounter;
wire [31:0] PhaseClockCounter;
wire [31:0] PhaseWaveCounter;
wire CountFinishFlag;
wire TopClear;
Measure MeasureU0(.Reset(Reset),
				  .Start(MeasureStart),
				  //.Clock(SysClockPLL),
				  .Clock(SysClock),
				  .InputWaveOne(WaveInOne),
				  .InputWaveTwo(WaveInTwo),
				  .FreClockCounter(FreClockCounter),
				  .FreWaveCounter(FreWaveCounter),
				  .PhaseClockCounter(PhaseClockCounter), 
				  .PhaseWaveCounter(PhaseWaveCounter),
				  .CountFinishFlag(CountFinishFlag),
				  .IndicatorLight(LED1),
				  .IndicatorLightB(LED3)
				  );
/* 数据输出 */
Read ReadU0(.Reset(Reset),
			.StoreFlag(CountFinishFlag),
			.MeasureStart(MeasureStart),
			.SourceDataOne(FreClockCounter),
			.SourceDataTwo(FreWaveCounter),
			.SourceDataThree(PhaseClockCounter),
			.SourceDataFour(PhaseWaveCounter),
//            .SourceDataOne(32'hffffffff),
//			.SourceDataTwo(32'hffffffff),
//			.SourceDataThree(32'hffffffff),
//			.SourceDataFour(32'hffffffff),
			.ReadClock(ReadClock),
			.OutBit(DataOut),
			.ReadyFlag(ReadyFlag),
			.IndicatorLight(LED0)
			);				


endmodule 

⌨️ 快捷键说明

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