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)

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

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.