关于Quartus II的几个新手问题请教!
时间:10-02
整理:3721RD
点击:
第一个问题:
定义一个输入:inter:in std_logic;如果我想在inter的上升沿进行动作,那么上升沿怎么写啊?
是这样么? if(inter'event and inter='1') then .....................
还是 if(rising_edge(inter)) then ........................
请指教!谢谢!
第二个问题
如果我在两个进程里都有同一个条件判断的话,那么是否会产生并行信号冲突的问题呢,如下,data 和ot是否会产生语法错误:error(10028):can't resolve multiple constant drivers for net data/ot ..........
addr:in std_logic;
cs:in std_logic;
data:in std_logic_vector(7 downto 0);
otut std_logic_vector(7 downto 0);
process(addr,cs)
begin
if(addr<='0' and cs<='0') then
if data<="00001111" then ot<="11110000"
else null;
end if;
else null;
end if;
end process;
process(addr,cs)
begin
if(addr<='1' and cs<='0') then
if data<="00001111" then ot<="00001111"
else null;
end if;
else null;
end if;
end process;
请多多指教,谢谢!
定义一个输入:inter:in std_logic;如果我想在inter的上升沿进行动作,那么上升沿怎么写啊?
是这样么? if(inter'event and inter='1') then .....................
还是 if(rising_edge(inter)) then ........................
请指教!谢谢!
第二个问题
如果我在两个进程里都有同一个条件判断的话,那么是否会产生并行信号冲突的问题呢,如下,data 和ot是否会产生语法错误:error(10028):can't resolve multiple constant drivers for net data/ot ..........
addr:in std_logic;
cs:in std_logic;
data:in std_logic_vector(7 downto 0);
otut std_logic_vector(7 downto 0);
process(addr,cs)
begin
if(addr<='0' and cs<='0') then
if data<="00001111" then ot<="11110000"
else null;
end if;
else null;
end if;
end process;
process(addr,cs)
begin
if(addr<='1' and cs<='0') then
if data<="00001111" then ot<="00001111"
else null;
end if;
else null;
end if;
end process;
请多多指教,谢谢!
第一个问题:
如果inter是一个时钟信号, if(inter'event and inter='1') then .....................
和if(rising_edge(inter)) then ........................都可以
若不是时钟,嘿嘿,自己判断inter的上升沿巴
第二个问题
同一个信号不允许在多个进程中赋值,否则则为多驱动
第一个问题:个人的经验,不同的综合器平台会有不同的生成结果。
第二个问题:进程的并行性决定了多进程不同能对同一个对象进行赋值。
多谢2位的回复,那么我想问:如果INTER是一个电平信号而不是时钟信号的话,那么上升沿该怎么写啊~~~~谢谢
时钟、或者电平,都是信号(Signal),可以利用信号类属性函数,'event, =1等等
有收获 第一个问题 我以为还是用第一个方式
