微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 这个逻辑怎么实现呢,请教大虾!

这个逻辑怎么实现呢,请教大虾!

时间:10-02 整理:3721RD 点击:
就是有两个输入端A,B 一个输出端C,要实现A的下降沿让C变为1 ,B 的下降沿让C变为0,如此反复。
如何实现呢?因为要用到两个沿的判断问题。不知道怎么用?

不知道,A和B同时下降沿时,怎么办

前提是:A和B 的下降沿是相互错开的。

信号就是这样的,都这样错开的。

然后,俺就用以下的程序写的。但输出的是XXXX
555~怎么回事呀。
architecture cn_test_behav of cn_test is
begin
process(a,b)
variable x:bit :='0';
begin
if a='0' and b='0' then--是这有问题吗?
if x='0' then
con1a<='1';
elsif x='1' then
con1a<='0';
end if;
X:=not x;
end if;
end process;
end cn_test_behav;

VHDL我不会,verilog可以这样实现
always @(negedge a or negedge b)
if(!b)
c <= 1;
else
c <= 0;
其实就是把a和b一个接在时钟端上,一个接在异步复位端上

楼上的做法不推荐,不可综合
非要negedge的话,可以打把A打一拍成AF!
在每个时钟上升的时候判断!A & AF1

简单,用两个移位寄存器,然后后一个寄存器的输出取反与前一个寄存器的输出相与,或者前一个寄存器取反与后一个寄存器的输出相与,即可。

always @(negedge a or negedge b)
if(!b)
c <= 1;
else
c <= 0;
上面这段代码是完全可以综合的,a相当于下沿有效的时钟,而b是异步低电平有效的置位信号(不是freelion所说的复位信号),在Altera FPGA上我综合过,可以综合为预测的逻辑,不过是否适用于搂主的设计到并不见得,但单从可综合性来说是完全可以通过的。

但在实际应用中那样写是不可行的,一般只能取时钟的posedge,negedge

拜托,你综合一下看看,a是不是会被放在触发器的时钟管脚上,唉

不要综合好了,set_dont_touch

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top