Смотрю тут сорец один:
Код
...
reg bclk;
reg [3:0]fd;
...
initial begin fd=0;end
...
always @(posedge clk)
begin
fd<=fd+1;
if(fd==7) fd<=0;
if(fd<4) bclk<=0;
else bclk<=1;
end
И что-то никак не врубаю - как эта хрень работать будет?
Заявленно, что clk=16.9344 MHz и что получится bck=1.4112 MHz (делим на 12)
Я что-то не верю! И вообще, как-то через Ж... сделано.
bclk не инитится. оно 0 будет?
Понимаю так: (clk сначала остановлен)
0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 :clk
0 0 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 0 0 :fd
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0:bclk
Получается, что делится на 8
Честно говоря не очень ясно еще: при fd==7, в него одновременно пихается 0 и 8 (fd+1)
fd<=fd+1 и if(fd==7) fd<=0 выполняются параллельно или последовательно? <= неблок. - значит вроде паралл.
может так?
fd установится в 7, и сразу сбросится в 0
0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 clk
0 0 0 0 1 1 2 2 3 3 4 4 5 5 6 6 0 0 1 1 2 2 3 3 4 4 5 5 6 6 0 0 fd
0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 bclk
тогда делится на 7...
Сообщение отредактировал MAXvaLL - Feb 1 2008, 15:05