yamu 发表于 2010-9-25 11:08:00

(黑金开发板)使用20M晶振作振荡源,每一CLK的周期难道不是(1/20Mhz)秒吗?

我是绝对新手,对FPGA感到茫然无助,感觉入门很难,还请各位高手指点。
我写了下面的代码。CLK设置为对应的芯片28引脚,接20M晶振。
我按照(1/20M)秒计算,即10M个周期为0.5S,而FFFFFH≈10M(D)。
下载到FPGA上,只见那灯狂闪。
于是乎我加了一个2位的TIME,每次FFFFFH时给TIME加1,加满4次后LED取反。
这样一来速度是慢了,依然没满到0.5秒闪一次的速度(目测)。
请问这一CLK的周期究竟怎么算?
module key(rst,clk,led1,led2,led3);
input rst,clk;
output led1,led2,led3;

/*每一CLK使KEY_count加1*/
reg KEY_count;
always @(posedge clk or negedge rst)
if(!rst) KEY_count <= 0;
else KEY_count<= KEY_count + 1'b1;

/*KEY_count达到FFFFH时TIME加1*/
reg TIME;
always @(posedge clk or negedge rst)
if(!rst) TIME=0;
else if(KEY_count == 20'hfffff) TIME=TIME+1;

/*每次TIME计满后将LED取反*/
reg d1,d2,d3;
always @(posedge clk or negedge rst)
if(!rst) begin
d1 <= 1;
d2 <= 0;
d3 <= 1;
end
else if(!TIME) begin
d1 <= ~d1;
d2 <= ~d2;
d3 <= ~d3;
end

/*更新LED*/
assignled1 = d1 ? 1'b1 : 1'b0;
assignled2 = d2 ? 1'b1 : 1'b0;
assignled3 = d3 ? 1'b1 : 1'b0;

endmodule

dinsl 发表于 2010-9-25 11:31:11

FFFFFH是1M

yamu 发表于 2010-9-25 11:41:28

!!!!!!
不胜羞愧
页: [1]
查看完整版本: (黑金开发板)使用20M晶振作振荡源,每一CLK的周期难道不是(1/20Mhz)秒吗?