写字节部分VHDL代码:
PROCESS(cq)—输出1 bit
SIGNAL cout:STD_LOGIC_VECTOR(2 DOWNTO 0);
VARIABLE di:STD_LOGIC;
BEGIN
ctrl<=‘0’;
IF(cq>=“0000” AND cq<=“0010”)THEN
di:=‘0’;——拉低输出电位10 ms
ELSIF(cq>“0010”AND cq<“1110”)THEN
di:=rq; ——取发送移位寄存器的输出位
ELSIF(cq>=“1110”)THEN
di:=‘1’;cout<=cout + 1;
END IF;
dqo<=di;
END PROCESS;
PROCESS(cout) —计数
SIGNAL f:STD_LOGIC;
IF cout=“111” THEN
f<=‘0’;—8位输出结束,停止计时
ELSE f<=‘1’;
END IF;
END PROCESS;