问:process中敏感变量问题?
时间:10-02
整理:3721RD
点击:
在我的程序中有这样一个要求:地址由外部给定,然后根据这个地址加1送出,有时还要保持(就是不加一)。但是要求外部地址一有变化就得传到过来,用什么样的敏感变量能实现这样的功能?
我这样做的:
CFG_ADDR:IN STD_LOGIC_VECTOR(5 DOWNTO 0);
LAST_ADDR:OUT STD_LOGIC_VECTOR(5 DOWNTO 0));
.
SIGNAL ORI_ADDR:STD_LOGIC_VECTOR(5 DOWNTO 0);
.
PROCESS(CFG_ADDR)
BEGIN
IF CFG_ADDR'EVENT THEN
ORI_ADDR<=CFG_ADDR;
END IF;
END PROCESS;
但是不行。
我这样做的:
CFG_ADDR:IN STD_LOGIC_VECTOR(5 DOWNTO 0);
LAST_ADDR:OUT STD_LOGIC_VECTOR(5 DOWNTO 0));
.
SIGNAL ORI_ADDR:STD_LOGIC_VECTOR(5 DOWNTO 0);
.
PROCESS(CFG_ADDR)
BEGIN
IF CFG_ADDR'EVENT THEN
ORI_ADDR<=CFG_ADDR;
END IF;
END PROCESS;
但是不行。
问:process中敏感变量问题?
如果只从仿真的角度来说,你把那个IF行去掉都可以了,地址一有变化,就可以进入这个进程。
但是如果从硬件实现的角度来说,这个功能实现起来很麻烦。而且一般都是靠另外的地址有效信号来实现,如果没有这种信号,光从地址来判断是不可取的。
另外,EVENT只对单一信号起作用,不能用向量。
问:process中敏感变量问题?
那可不可以这样,假设有两个信号:
IF CFG_ADDR(0)'EVENT AND CFG_ADDR(1)'EVENT THEN
..................
...................................
问:process中敏感变量问题?
不可以,硬件上无法实现
问:process中敏感变量问题?
CFG_ADDR:IN STD_LOGIC_VECTOR(5 DOWNTO 0);
LAST_ADDR:OUT STD_LOGIC_VECTOR(5 DOWNTO 0));
.
SIGNAL ORI_ADDR:STD_LOGIC_VECTOR(5 DOWNTO 0);
.
ORI_ADDR<=CFG_ADDR;
问:process中敏感变量问题?
不需用进程,直接赋值就可以呀