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

📄 frame.v

📁 帧同步模块的Veriolog源码。 在ModelSim下的一个工程。有测试文件。
💻 V
字号:
//*******************************************************************************
//                         FRAME SYNC    
//              qidifeng@isee            2006.3.20
//*******************************************************************************
//frame.v

module		frame(clk, rst_n, seri_in, seri_out, frame);
input		clk;
input		rst_n;
input		seri_in;

output		seri_out;
output		frame;

reg	[6:0]	seri_snyc;
wire		bark_t;
wire		bark_f;
wire		clk_div32;

reg	[6:0]	div32_cnt;
reg		state;//not actully a reg

reg		currentState,nextState;
parameter		CAP=1'b0,
		SUS=1'b1;

//regonize the bark code  1110010
always@(posedge clk)
	if(!rst_n)		seri_snyc[6:0]<=0;
	else
			begin
			seri_snyc[6:1]<=seri_snyc[5:0];
			seri_snyc[0]<=seri_in;
			end

assign		seri_out=seri_snyc[6];
assign		bark_t=~seri_snyc[0]&seri_snyc[1]&~seri_snyc[2]&~seri_snyc[3]&seri_snyc[4]&seri_snyc[5]&seri_snyc[6];
assign		bark_f=(~seri_snyc[0]+seri_snyc[1]+~seri_snyc[2]+~seri_snyc[3]+
                        seri_snyc[4]+seri_snyc[5]+seri_snyc[6]==3'h6)?1:0;
                         

//divid the clk 32
always@(posedge clk)
	if(
	   !rst_n//system start
	   |(state==0&bark_t)//state is captrure and regonize bark right
	   |(state==1&(bark_t|bark_f)&clk_div32)//state is sustain 
	   )
	   	div32_cnt[6:0]<=0;
	  else
	  	div32_cnt[6:0]<=div32_cnt[6:0]+1;
	  	
assign	clk_div32=div32_cnt[4]&div32_cnt[3]&div32_cnt[2]&div32_cnt[1]&div32_cnt[0];
assign	sync_lost=div32_cnt[4]&div32_cnt[3]&div32_cnt[2]&div32_cnt[1]&div32_cnt[0]&div32_cnt[5]&div32_cnt[6];

//state machine
	   	
always@(*)
	case(currentState)
		CAP: begin	nextState=(bark_t==1)?SUS:CAP; state=0;  end
		SUS: begin	nextState=(sync_lost==1)?CAP:SUS; state=1; end
	endcase
always@(posedge clk)
	if(!rst_n)
		currentState<=CAP;
	else
		currentState<=nextState;
		
assign	frame=state&clk_div32;

endmodule
	
		
			   
	   














⌨️ 快捷键说明

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