我知道你想要的意思:检测q端口输入值并取反产生时钟,若是1,则产生的时钟从0开始,若是0,则产生的时钟从1开始,也就是起始相位不同。
我也没弄出你要的效果来~对VHDL下的双向口操作这方面知识还是很欠缺,有空我会继续想想~
想不出来又无大侠出现的话,建议你去这个坛子里发个帖子问问,里面有不少高手:
http://www.ourdev.cn/bbs/bbs_list.jsp?bbs_id=1029
nbsp;ieee; - 库引用
use ieee.std_logic_1164.ALL; - 程序包引用
use ieee.std_logic_unsigned.all; - 程序包引用
entity fengpin is - 实体定义,也就是一个电路模块的对外特性
port(clki:in std_logic; - 输入时钟
clko:out std_logic); - 分频输出
end fengpin;
architecture a of fengpin is - 结构体定义,也就是电路模块的内部功能
signal b:std_logic_wector(3 downto 0); - 用来计数,实现分频
begin
wait until clki='1'; - 等待信号clki上升沿到来
b<=b+1; - 然后将计数值b加1
end process;
clko<=a(3); - 输出计数值b的最高位,每8个clki的上升沿变化一次,每16个clki的上升沿一个周期
end a ;