在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3222|回复: 11

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

[复制链接]
发表于 2007-9-27 09:57:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
就是有两个输入端A,B 一个输出端C  ,要实现A的下降沿让C变为1 ,B 的下降沿让C变为0,如此反复。。。。
如何实现呢??因为要用到两个沿的判断问题。。不知道怎么用?
发表于 2007-9-27 10:02:26 | 显示全部楼层
不知道,A和B同时下降沿时,怎么办
 楼主| 发表于 2007-9-27 10:23:01 | 显示全部楼层
前提是:A和B 的下降沿是相互错开的。
 楼主| 发表于 2007-9-27 10:39:32 | 显示全部楼层
信号就是这样的,都这样错开的。。。。。
QQ截图未命名.bmp
 楼主| 发表于 2007-9-27 12:04:12 | 显示全部楼层
然后,俺就用以下的程序写的。。。但输出的是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;
发表于 2007-9-27 21:10:32 | 显示全部楼层
VHDL我不会,verilog可以这样实现
always @(negedge a or negedge b)
if(!b)
        c <= 1;
else
        c <= 0;

其实就是把a和b一个接在时钟端上,一个接在异步复位端上
发表于 2007-9-29 09:54:31 | 显示全部楼层
楼上的做法不推荐,不可综合
非要negedge的话,可以打把A打一拍成AF!
在每个时钟上升的时候判断!A & AF1
发表于 2007-9-29 14:54:01 | 显示全部楼层
简单,用两个移位寄存器,然后后一个寄存器的输出取反与前一个寄存器的输出相与,或者前一个寄存器取反与后一个寄存器的输出相与,即可。
发表于 2007-9-29 15:59:44 | 显示全部楼层


原帖由 linyanzhu1982 于 2007-9-29 09:54 发表
楼上的做法不推荐,不可综合
非要negedge的话,可以打把A打一拍成AF!
在每个时钟上升的时候判断!A & AF1



always @(negedge a or negedge b)
if(!b)
        c <= 1;
else
        c <= 0;

上面这段代码是完全可以综合的,a相当于下沿有效的时钟,而b是异步低电平有效的置位信号(不是freelion所说的复位信号),在Altera FPGA上我综合过,可以综合为预测的逻辑,不过是否适用于搂主的设计到并不见得,但单从可综合性来说是完全可以通过的。
发表于 2007-9-29 22:29:35 | 显示全部楼层
但在实际应用中那样写是不可行的,一般只能取时钟的posedge,negedge
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-17 04:35 , Processed in 0.026827 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表