EDA(Quartus II)-CNC周波数分割器の設計

目次

目的:

実験プレビュー:

実験的説明:分周器の設計

偶数分周器の設計(例として6つの分周器を取り上げます)

奇数分周器の設計(例として9分周器を取り上げます)

30ディバイダーデザイン

実験内容:数値制御周波数分割器の設計

ソースコード

シミュレーション波形

ハードウェア検証

授業後の宿題

 実験概要


目的:

数値制御周波数分割器の設計、分析、およびテスト方法を学び、カウンターの設計と適用を練習します。

実験プレビュー:

カウンターの設計に精通している。カウンターを使用して分周器の設計を実現する方法を理解している。

実験的説明:分周器の設計

2つの質問を検討してください。

Q:周波数分割とは何ですか?周波数分割係数とは何ですか?

A:高周波信号clkを低周波信号clk_1に変換できる回路を分周器と呼びます。clk_1信号の周期がclkの周期のn倍の場合、nは分周係数です)

Q:分周器の設計の中心的なアイデアは何ですか?

A:カウンターのデザイン)

偶数分周器の設計(例として6つの分周器を取り上げます)

module dvf6(clk,clk_1);
input	clk;
output	reg	clk_1;
reg[2:0]	q;
always@(posedge	clk)
begin
	if(q==3'b101)	q<=3'b000;
	else	q<=q+1;
end
always@(q)
begin
	if(q>=3b'011)	clk_1<=1'b1;
	else	clk_1<=1'b0;
end
endmodule


另一种设计方案
module dvf6(clk,clk_1);
input	clk;
output	reg	clk_1;
reg[2:0]	q;b
always@(posedge	clk)
begin
	if(q==3'b010)	begin	q<=q+3'b001;  clk_1<=~clk_1;end
	else if	(q==3'b101)	begin q<=3'b000;  clk_1<=~clk_1;end
	else	q<=q+3'b001;
end
endmodule

奇数分周器の設計(例として9分周器を取り上げます)

module	dvf9(clk,clk_1);
input	clk;
output	clk_1;
reg[3:0]	q1,q2;
reg	clk_p,clk_n;
always@(posedge clk)
begin
	if(q1==4'b100)	begin	q1<q1+4'b0001;clk_p<=~clk_p;end
	else if(q1==4'b1000)	begin	q1<=4'b0000;clk_p<=~clk_p;end
	else	q1<=q1+4'b0001;
end
alway@(negedge clk)
begin
	if(q2==4'b0100)	begin	q2<=q2+4'b0001;clk_n<=~clk_n;end
	else if	(q2==4'b1000)	begin	q2<=4'b0000;clk_n<=~clk_n;end
	 else	q2<=q2+4b'0001;
end
always@(negedge	clk)
begin
	if(q2==4b'0100)	begin	q2<=q2+4'b0001;clk_n=~clk_n;end
	else if(q2==4'b1000)	begin	q2<=4'b0000;clk_n<=~clk_n;end
	else	q2<=q2+4'b0001;
end
assign	clk_1=clk_p|clk_n;
endmodule

30ディバイダーデザイン

module dvf_30(clk,clk_1);
input	clk;
output	reg	clk_1;
reg[4:0]	q;
always@(posedge	clk)
begin
	if(q==5'b11101)	q<=5'b00000;
	else	q<=q+1;
end
always@(q)
begin
	if(q>=4'b1111)	clk_1<=1'b1;
	else	clk_1<=1'b0;
end
endmodule

実験内容:数値制御周波数分割器の設計

数値制御分周器の機能は、入力端子に異なる入力データが与えられると、入力クロック信号の周波数分周比が異なることです。数値制御分周器は、カウント値をプリセットできる加算カウンタを備えて設計されています。パラレル。方法は、カウントオーバーフロービットをプリセット数ローディング入力信号に接続することです。

ソースコード

module	dvf_suk(clk,D,fout,full_1);
input	clk;
input	[7:0]	D;
output	reg	fout;
reg[7:0]	reg8;
reg	full;
output full_1;
always@(posedge clk)
begin
	if(reg8==8'hff)	begin	reg8<=D;full<=1'b1; end
	else	begin	reg8<=reg8+8'b1;full<=1'b0; end
end
always@(posedge full)
begin
	fout<=~fout;
end
assign full_1=full;
endmodule

シミュレーション波形

ハードウェア検証

数値制御分周器の機能を設計する際には、実験回路モード1を選択できます。このモードでは、キー2 /キー1が8ビットのプリセット番号D(PIO7〜PIO0)を入力し、CLKはclockB0によって入力されます。周波数は65536Hz以上です(周波数がオーディオ範囲に入った後の分割を確実にするため)。出力はブザー信号入力端子に接続されます。キー2 /キー1の入力値を変えると、音色の違う音が聞こえます。

授業後の宿題

回路は、2つの数値制御周波数分周器モジュールを使用して設計されているため、方形波出力の正および負のパルス幅の幅は、それぞれ2つの8ビット入力データによって制御されます。

参照回路図

 

シミュレーション波形

 実験概要

おすすめ

転載: blog.csdn.net/XZ_ROU/article/details/113711497