阅读:1624回复:8
求助CPLD编程问题?
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 |
|
沙发#
发布于:2003-07-28 12:38
ELSIF( BRST=\'1\' )THEN
有错 对于IF(READY\'EVENT AND READY=\'1\')THEN时钟触发语句,不能使用else |
|
板凳#
发布于:2003-07-28 19:01
可是我把此句分写成两个IF语句,编译还是通不过。总是莫名其妙的出错。 :(
|
|
地板#
发布于:2003-07-28 19:03
可能是这样
有的编程器要求进程中所有出现的信号都要写在()中。 你把READY写到9()中去试试。 |
|
|
地下室#
发布于:2003-07-29 07:56
可是我把此句分写成两个IF语句,编译还是通不过。总是莫名其妙的出错。 :( 用if嵌套 |
|
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; 这样写就通过了,谢谢各位!!!! |
|
6楼#
发布于:2003-07-29 17:50
PROCESS(MSH,BRST,READY) 很好的嘛,把结果写出来 ZN应该鼓励一下的嘛! |
|
7楼#
发布于:2003-07-30 11:10
:)是啊,是啊大家相互交流嘛!又不是什么秘密。
|
|
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了,不知道我说得对不对哈) |
|