发新话题
打印

请问这个逻辑该怎么用VHDL实现啊

请问这个逻辑该怎么用VHDL实现啊



[ 本帖最后由 zhjianmail 于 2008-1-15 13:48 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

可以用'异或'试试,

signal a,b :std_logic;  -- 复位时让a,b的值不一样
process(clk1)
....
if( Rising_edge(clk1) then
      a <= not a;
......

process(clk2)
....
if( Rising_edge(clk2) then
      b <= not b;
......
out c <= a xor b;

TOP

TO qinxg,
可行,谢谢啦。

TOP

高手啊呵呵

TOP

高手谢啦

TOP

2楼的好主意~但有些思维定势,而且时钟的到来有不确定性。
可以把clk1当作异步复位信号
process(clk1,clk2)
if(clk1) then
    d <= '0';
elsif Rising_edge(clk2) then
   d <= '1';
end if;
end process;
盗亦有道,斟量商度,有無必中,聖也; 入先,勇也 ; 出後, 義也 ;知可否,智也 ;分均,仁也。.

TOP

clk1和clk2异或后产生了两倍频的信号,该信号作为D触发器的时钟,触发器的输出反相后接输入端即可产生所需信号。

TOP

引用:
原帖由 yuananr 于 2008-5-29 21:59 发表
clk1和clk2异或后产生了两倍频的信号,该信号作为D触发器的时钟,触发器的输出反相后接输入端即可产生所需信号。
这个方法好!
每天都进步一点

TOP

[quote]原帖由 alpha406 于 2008-5-29 10:59 发表
2楼的好主意~但有些思维定势,而且时钟的到来有不确定性。
可以把clk1当作异步复位信号

我觉得这个好啊!!

TOP

引用:
原帖由 alpha406 于 2008-5-29 10:59 发表
2楼的好主意~但有些思维定势,而且时钟的到来有不确定性。
可以把clk1当作异步复位信号
process(clk1,clk2)
if(clk1) then
    d  
如果两个时钟的脉冲不是一个间隔一个的话,你这种方法好像就不行了吧,
还是二楼的比较好。

另外如果两个时钟进行异或生成新的时钟的话就产生了门控时钟,这个在设计中不是很提倡的吧
停下来想一想!

TOP

都是牛人, 学习学习!

TOP

回复 6# 的帖子

我也在弄这个时序,只是我只要在第一个时钟周期得到他的输出低电平.劳烦您给点建议啊.还有这个一个进程有两时钟,编译时出错了

TOP

回复 12# 的帖子

你只需把二楼程序中的not去掉就好了   这样a,b在第一个时钟周期后一直是高  a,b同或就是你要的时序

TOP

就这个图来说,两种方法都没有问题.
就通用性说,还应该具体问题具体分析,如果两个时钟沿同时到呢,二楼的恐怕要出冒险,6楼的恐怕结果不对,
但六楼的方法可以根据所要结果修改,二楼的怕是很不好解决,
所经还是推6楼方法

TOP

支持一下吧

支持一下吧

TOP

我也觉得好,,,,

TOP

都不错.应该就实际情况而论优劣吧?

TOP

这样怎么样?

signal a:std_logic;
begin
process(clk1,clk2)
        begin
        if(Rising_edge(clk1) or Rising_edge(clk2))then
                a<=not a;
        end if;
end process;
        outp<=a;

TOP

学习学习,18楼的好像不行呀,太理想化了

TOP

看看就有收获啊

TOP

好东西,顶

TOP

发新话题