Hallo allen,
Gebruik een DE1 Altera board (EP2C20F484C7) en gebruik voor een clock_1kHz PIN_L1.
Dit is voor een servo programma maar ik zie op de pen voor het servosignaal een veel te hoge frequentie (1Mhz of zo) dus veel te hoog.
Klopt de PIN_L1 wel voor het clock_1kHz signaal?
M.v.g.
moppa
Ik ken dit devboard niet, maar in de meeste gevallen hant aan de klok van de FPGA een snelle oscilator (50MHz oid) en moet je die intern op de FPGA delen. Weet je zeker dat hier op het devboard een echte 1KHz klok zit (dit lijkt me akelig traag, en onhandig als die niet synchroon loopt met de master clock)
Anoniem
ik ben hem nog nooit tegen gekomen
maar misschien is de makkelijk voor je
dan heb je gelijk een heel arsenaal met clk_jes
gekregen van een co lid
module clock_module
(
clk_50mhz,
clk_100ns,
clk_1us,
clk_10us,
clk_100us,
clk_1ms,
clk_10ms,
clk_100ms,
clk_1s
);
input clk_50mhz;
output clk_100ns;
output clk_1us;
output clk_10us;
output clk_100us;
output clk_1ms;
output clk_10ms;
output clk_100ms;
output clk_1s;
reg [2:0] clk_100ns_cnt;
reg [5:0] clk_1us_cnt;
reg [8:0] clk_10us_cnt;
reg [12:0] clk_100us_cnt;
reg [6:0] clk_1ms_cnt;
reg [9:0] clk_10ms_cnt;
reg [13:0] clk_100ms_cnt;
reg [6:0] clk_1s_cnt;
reg clk_100ns_reg;
reg clk_1us_reg;
reg clk_10us_reg;
reg clk_100us_reg;
reg clk_1ms_reg;
reg clk_10ms_reg;
reg clk_100ms_reg;
reg clk_1s_reg;
reg clk_100ns;
reg clk_1us;
reg clk_10us;
reg clk_100us;
reg clk_1ms;
reg clk_10ms;
reg clk_100ms;
reg clk_1s;
// sync_clock.
always @ (posedge clk_50mhz)
begin
clk_100ns <= clk_100ns_reg;
clk_1us <= clk_1us_reg;
clk_10us <= clk_10us_reg;
clk_100us <= clk_100us_reg;
clk_1ms <= clk_1ms_reg;
clk_10ms <= clk_10ms_reg;
clk_100ms <= clk_100ms_reg;
clk_1s <= clk_1s_reg;
end
// clock 100ns.
always @ (posedge clk_50mhz)
begin
if (clk_100ns_cnt == 4) clk_100ns_cnt <= 0;
else
begin
clk_100ns_cnt <= clk_100ns_cnt + 1;
if (clk_100ns_cnt == 0) clk_100ns_reg <= 1;
if (clk_100ns_cnt == 2) clk_100ns_reg <= 0;
end
end
// clock 1us.
always @ (posedge clk_50mhz)
begin
if (clk_1us_cnt == 49) clk_1us_cnt <= 0;
else
begin
clk_1us_cnt <= clk_1us_cnt + 1;
if (clk_1us_cnt == 0) clk_1us_reg <= 1;
if (clk_1us_cnt == 24) clk_1us_reg <= 0;
end
end
// clock 10us.
always @ (posedge clk_50mhz)
begin
if (clk_10us_cnt == 499) clk_10us_cnt <= 0;
else
begin
clk_10us_cnt <= clk_10us_cnt + 1;
if (clk_10us_cnt == 0) clk_10us_reg <= 1;
if (clk_10us_cnt == 250) clk_10us_reg <= 0;
end
end
// clock 100us.
always @ (posedge clk_50mhz)
begin
if (clk_100us_cnt == 4999) clk_100us_cnt <= 0;
else
begin
clk_100us_cnt <= clk_100us_cnt + 1;
if (clk_100us_cnt == 0) clk_100us_reg <= 1;
if (clk_100us_cnt == 2500) clk_100us_reg <= 0;
end
end
// clock 1ms.
always @ (posedge clk_10us)
begin
if (clk_1ms_cnt == 99) clk_1ms_cnt <= 0;
else
begin
clk_1ms_cnt <= clk_1ms_cnt + 1;
if (clk_1ms_cnt == 0) clk_1ms_reg <= 1;
if (clk_1ms_cnt == 50) clk_1ms_reg <= 0;
end
end
// clock 10ms.
always @ (posedge clk_10us)
begin
if (clk_10ms_cnt == 999) clk_10ms_cnt <= 0;
else
begin
clk_10ms_cnt <= clk_10ms_cnt + 1;
if (clk_10ms_cnt == 0) clk_10ms_reg <= 1;
if (clk_10ms_cnt == 500) clk_10ms_reg <= 0;
end
end
// clock 100ms.
always @ (posedge clk_10us)
begin
if (clk_100ms_cnt == 9999) clk_100ms_cnt <= 0;
else
begin
clk_100ms_cnt <= clk_100ms_cnt + 1;
if (clk_100ms_cnt == 0) clk_100ms_reg <= 1;
if (clk_100ms_cnt == 5000) clk_100ms_reg <= 0;
end
end
// clock 1s.
always @ (posedge clk_10ms)
begin
if (clk_1s_cnt == 99) clk_1s_cnt <= 0;
else
begin
clk_1s_cnt <= clk_1s_cnt + 1;
if (clk_1s_cnt == 0) clk_1s_reg <= 0;
if (clk_1s_cnt == 50) clk_1s_reg <= 1;
end
end
endmodule
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Ik blijf dat een vieze oplossing vinden. Waarom nou niet gewoon alles op 50MHz laten lopen en dan (bv) eens per seconde iets doen? Daar heb je echt geen 1Hz clock voor nodig hoor.
Maar goed, hebben we het al eens eerder over gehad, dus go your gang.