melody-bao
驱动牛犊
驱动牛犊
  • 注册日期2003-07-17
  • 最后登录2005-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1626回复:8

求助CPLD编程问题?

楼主#
更多 发布于:2003-07-28 09:23
PROCESS(MSH,BRST)
BEGIN
IF(MSH=\'1\')THEN
PCI_BLAST<=\'Z\';
ELSE
IF(READY\'EVENT AND READY=\'1\')THEN
PCI_BLAST<=\'1\';
ELSIF( BRST=\'1\' )THEN
PCI_BLAST<=\'0\';
ELSE
PCI_BLAST<=\'1\';
END IF;
END IF;
BLAST<=PCI_BLAST;
END PROCESS;
系统报错ERROR:Unsupported feature error: non-local-static attribute names are not supported.如果不使用上升沿,则通过!附:请问使用时钟沿注意什么问题?  :o
green_pine
驱动太牛
驱动太牛
  • 注册日期2002-10-22
  • 最后登录2019-06-10
  • 粉丝3
  • 关注0
  • 积分48分
  • 威望599点
  • 贡献值1点
  • 好评度144点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-07-28 12:38
ELSIF( BRST=\'1\' )THEN
有错
对于IF(READY\'EVENT AND READY=\'1\')THEN时钟触发语句,不能使用else
melody-bao
驱动牛犊
驱动牛犊
  • 注册日期2003-07-17
  • 最后登录2005-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-28 19:01
可是我把此句分写成两个IF语句,编译还是通不过。总是莫名其妙的出错。 :(
dairlom
驱动牛犊
驱动牛犊
  • 注册日期2003-04-25
  • 最后登录2006-05-27
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-28 19:03
可能是这样
有的编程器要求进程中所有出现的信号都要写在()中。
你把READY写到9()中去试试。
LM
green_pine
驱动太牛
驱动太牛
  • 注册日期2002-10-22
  • 最后登录2019-06-10
  • 粉丝3
  • 关注0
  • 积分48分
  • 威望599点
  • 贡献值1点
  • 好评度144点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2003-07-29 07:56
可是我把此句分写成两个IF语句,编译还是通不过。总是莫名其妙的出错。 :(

用if嵌套
melody-bao
驱动牛犊
驱动牛犊
  • 注册日期2003-07-17
  • 最后登录2005-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-29 13:38
PROCESS(MSH,BRST,READY)
BEGIN
IF(MSH=\'1\')THEN
   PCI_BLAST<=\'Z\';
ELSE
    IF(READY\'EVENT AND READY=\'1\')THEN
       PCI_BLAST<=\'1\';
    END IF;
    IF( BRST=\'1\' )THEN
       PCI_BLAST<=\'0\';
    ELSE
       PCI_BLAST<=\'1\';
    END IF;
END IF;
BLAST<=PCI_BLAST;
END PROCESS;
这样写就通过了,谢谢各位!!!!
huttu
驱动大牛
驱动大牛
  • 注册日期2002-11-19
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望25点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-29 17:50
PROCESS(MSH,BRST,READY)
BEGIN
IF(MSH=\'1\')THEN
   PCI_BLAST<=\'Z\';
ELSE
    IF(READY\'EVENT AND READY=\'1\')THEN
       PCI_BLAST<=\'1\';
    END IF;
    IF( BRST=\'1\' )THEN
       PCI_BLAST<=\'0\';
    ELSE
       PCI_BLAST<=\'1\';
    END IF;
END IF;
BLAST<=PCI_BLAST;
END PROCESS;
这样写就通过了,谢谢各位!!!!

很好的嘛,把结果写出来
ZN应该鼓励一下的嘛!
melody-bao
驱动牛犊
驱动牛犊
  • 注册日期2003-07-17
  • 最后登录2005-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-07-30 11:10
 :)是啊,是啊大家相互交流嘛!又不是什么秘密。
zhoujian29
驱动牛犊
驱动牛犊
  • 注册日期2003-10-16
  • 最后登录2005-11-23
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-01-13 11:06
通是通过了,但您的这种写法不符合硬件习惯,改成下面的如何:

PROCESS(MSH,BRST,READY)
BEGIN

IF(MSH=\'1\')THEN
PCI_BLAST<=\'Z\';
ELSE
IF ( BRST=\'1\' ) THEN
PCI_BLAST<=\'0\';
ELSIF (READY\'EVENT AND READY=\'1\') THEN
PCI_BLAST<=\'1\';
END IF;
END IF;

BLAST<=PCI_BLAST;

END PROCESS;

这个process明显增强了可读性:BRST是异步复位信号,READY是时钟信号。这样处理后PCI_BLAST的状态就明确多了。(我有大半年没写VHDL了,不知道我说得对不对哈)
游客

返回顶部