fsk_demod.v

来自「模拟数字通信通道」· Verilog 代码 · 共 56 行

V
56
字号
module FSK_demod(clk_in,clk_DATA,FSK_receive,DATA);
//,psk_rst,count);

	input clk_in,clk_DATA,FSK_receive;
	output DATA;
	//output psk_rst,count;	//temp
	wire clk0,clk1;
	wire psk_rst;
	reg DATA_reg;
	reg [4:0] count;

	assign DATA=DATA_reg;
	//assign psk_rst=pulse;
	Freq_gen(.clk_in(clk_in),.clk0(clk0),.clk1(clk1));	//rebuild clk0 and clk1
	Pulse_gen(.clk_DATA(clk_DATA),.frcv(FSK_receive),.pulse(psk_rst));

	always@(posedge clk_DATA)
	begin
		if(count<=5'b10101)	//5'b10110=22
			DATA_reg<=1'b0;
		else
			DATA_reg<=1'b1;
	end	
	
	always@(posedge FSK_receive)
	begin
		if (psk_rst)
			count<=5'b00000;
		else
			count<=count+5'b00001;
	end
	
endmodule

module Pulse_gen(clk_DATA,frcv,pulse);

	input clk_DATA,frcv;
	output pulse;
	reg [4:0] count;
	
	assign pulse=(count==5'b00001);
	
	always@(posedge frcv)
	begin
		if (!clk_DATA)
			count<=5'b00000;
		else
		begin	
			if (count==5'b11111)
				count<=5'b00000;
			else
				count<=count+5'b00001;
		end
	end

endmodule

⌨️ 快捷键说明

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