VHDL 输出总是自加一

发布时间:2024-05-18 16:01 发布:上海旅游网

问题描述:

if (clock'event and clock='1') then --当clock改为20mHz时,这时H1周期刚好为100ns
if ( fv1='1') then
if (cnt_1<2141*2+2) then --2156*2 个clock 就是一个 T(V1) 2141*2=T(L)
cnt_1:=cnt_1+1;
else
cnt_1:=0;
end if;

if (cnt_1<15*2) then --15*2 个clock =T(HD)
fh1<='1';
elsif (cnt_1<2139*2) then --2139*2 个clock =T(HD) + 2124*T(H)
if (cnt<1) then
fh1<='0';
cnt:=cnt+1;
elsif (cnt<2) then
fh1<='1';
cnt:=0;
end if;
elsif (cnt_1<2141*2+2) then
fh1<='1';
end if;
elsif (fv1='0') then
fh1<='1';
end if;
end if;
end process;

这段程序仿真后, if (cnt_1<15*2) then
fh1<='1';
这条语句实现的高电平延迟,在每一个周期后都会自动多延时一个clock,为什么呢?请高手帮忙!先谢谢了!我是新手,我没有分送。。

问题解答:

对于信号signal而言不要使用:=这种赋值方式。这种赋值方式不好进行综合。
这段程序计数器设计比较乱。实际上不需要用小于的表达方式(因为这样会生成比较器),几个计数器都用等号就好了

热点新闻