使用EDK中的emc IP核,设置为异步,两个bank。一个控制FLASH,一个控制外部地址空间传参数。Cen为片选信号,Mem_DQ_I 为emc的数据输入总线,DQ_0和DQ_1分别为flash的数据和emc的回读数据
第一种写法:Mem_DQ_I <= DQ_0 when (cen(0)='0') else (others=>'Z');
Mem_DQ_I <= DQ_1 when (cen(1)='0') else (others=>'Z');
第二种写法:Mem_DQ_I <= DQ_0 when (cen(0)='0') else
DQ_1 when (cen(1)='0') else
(others=>'Z');
第三种写法: process(clk,rst)
begin
if (rst ='0') then
Mem_DQ_I <=(others=>'Z');
elsif (clk 'event and clk ='0') then
if (cen(0)='0') then
Mem_DQ_I<= DQ_0;
elsif (cen(1)='0') then
Mem_DQ_I<= DQ_1;
end if;
end if;
end process;
关于这段代码我有几个疑问:
1. 第一种写法,结果会不会有冲突?
2. 第一种和第二种写法最终的编译效果有区别吗?
3. 第二种写法和第三种写法一个异步,一个同步,有师兄给我的指导经验是:最好使用同步,少用异步。大家的看法呢? |