你這樣是把頻率分了10倍,50倍,50000倍,,你可以假定一個計數值,當這個一個時鐘上升沿到來時,計數值加1,當計數值加到一定值x時的時候,你的輸出訊號由1變0,或者由0變1這個翻轉,則輸出的頻率就等於50mhz*x*2,然後再根據你需要分頻結果,計算x的值,下面是一個例子,你只需新增三個相同的process()----endprocess;的內容就可以了,當然還需改下x的值!!!
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityfenpinis
port(clk:instd_logic;
clk_out:outstd_logic);
end;
architectureartoffenpinis
signalcount:integerrange0tox;---改x值,
signalclk_data:std_logic;
begin
process(clk,count)
ifclk"eventandclk="1"then
ifcount=xthen---x值決定分頻倍數
count=0;
clk_data
elsecount
endif;
clk_out
endprocess;
endart;
你這樣是把頻率分了10倍,50倍,50000倍,,你可以假定一個計數值,當這個一個時鐘上升沿到來時,計數值加1,當計數值加到一定值x時的時候,你的輸出訊號由1變0,或者由0變1這個翻轉,則輸出的頻率就等於50mhz*x*2,然後再根據你需要分頻結果,計算x的值,下面是一個例子,你只需新增三個相同的process()----endprocess;的內容就可以了,當然還需改下x的值!!!
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityfenpinis
port(clk:instd_logic;
clk_out:outstd_logic);
end;
architectureartoffenpinis
signalcount:integerrange0tox;---改x值,
signalclk_data:std_logic;
begin
process(clk,count)
begin
ifclk"eventandclk="1"then
ifcount=xthen---x值決定分頻倍數
count=0;
clk_data
elsecount
endif;
endif;
clk_out
endprocess;
endart;