PROCESS(CLK) --CLK 1M
BEGIN
IF CLK' EVENT AND CLK='1' THEN
if qn=9 then
qn = 0;
else
QN<=QN+1;
end if;
END IF;
END PROCESS;
————————————————
这个程序有两个计数器,上面的用来分频。把1M的CLK分成100K的CLK1,CLK1为另个计数器的时钟。
另外一个计数器完成一个8计数循环。这个不准。
PLUSEX<=XAXA3;
PROCESS(CLK1,LOAD) --CLK1 100K LOAD外部随机信号
BEGIN
IF SAVE3="0000000000000000" THEN
IF LOAD='1' THEN
SAVE3<="0000000000001100; --格雷码 二进制 8
END IF;
ELSIF CLK1' EVENT AND CLK1='1' THEN
IF SAVE3/="0000000000000000" THEN
CASE SAVE3 IS
WHEN "0000000000001100"=>
SAVE3<="0000000000000100";
WHEN "0000000000000100"=>
SAVE3<="0000000000000101";
WHEN "0000000000000101"=>
SAVE3<="0000000000000111";
WHEN "0000000000000111"=>
SAVE3<="0000000000000110";
WHEN "0000000000000110"=>
SAVE3<="0000000000000010";
WHEN "0000000000000010"=>
SAVE3<="0000000000000011";
WHEN "0000000000000011"=>
SAVE3<="0000000000000001";
WHEN "0000000000000001"=>
SAVE3<="0000000000000000";
WHEN OTHERS=>
SAVE3<="0000000000000000";
END CASE;
XAXA3<=NOT XAXA3; --XAXA3每次都翻转,通过PLUSEX<=XAXA3 输出,可以看到记了多少数。
END IF;
END IF;
END PROCESS;