c_out :OUT STD_LOGIC -------处理后的逻辑电平,输出
);
END syn_test;
ARCHITECTURE behv OF syn_test IS
BEGIN
PROCESS(sw1_a,sw1_b,sw1_c,sw1_d,sw2_a,sw2_b,sw2_c,sw2_d,sw3_a,sw3_c,sw4_a,sw4_b,sw4_c,sw4_d,sw5_a,sw5_b,sw5_c,sw5_d,sw6_a,sw6_b,sw6_c,sw6_d,sw7_a,sw7_b,sw7_c,sw7_d,sw8_a,sw8_b,sw8_c,sw8_d,sw9_a,sw9_c,sw10_a,sw10_c)
BEGIN
IF (('0'
sw1_a+sw1_b+sw1_c+sw1_d+sw2_a+sw2_b+sw2_c+sw2_d+sw3_a+sw3_c+sw4_a+sw4_b+sw4_c+sw4_d+sw5_a+sw5_b+sw5_c+sw5_d+sw6_a+sw6_b+sw6_c+sw6_d+sw7_a+sw7_b+sw7_c+sw7_d+sw8_a+sw8_b+sw8_c+sw8_d<'5')OR
('0'
c_out<='1';
ELSE
c_out<='0';
END IF;
END PROCESS;
END behv;
我的目的是要实现一个简单的逻辑关系,输入的量是开关量,如果开关有一组开关的子开关都不接通或者都接通,则输出低电平,其他情况输出高电平。也就是产生一个脉冲用于检验各组开关的延时时间。
编译出现的结果如下:
Error (10327): VHDL error at syn_test.vhd(59): can't determine definition of operator ""+"" -- found 0 possible definitions
Error (10327): VHDL error at syn_test.vhd(60): can't determine definition of operator ""+"" -- found 0 possible definitions
Error (10327): VHDL error at syn_test.vhd(61): can't determine definition of operator ""+"" -- found 0 possible definitions
感觉是数据类型的问题,貌似信号不能直接相加,我该怎么办?如何解决这个问题?
想了很久,程序还是没法子编。哎......
我把问题说清楚,我把要实现的功能简化一下,帮我把程序编出来吧,我觉得很简单,就是无从下手。
说明如下:有2个4子开关和两个2子开关,目的是测量各个开关的的时间延时,即最先接通的子开关和最后接通的时间,各个开关不是同时接通的。我的设计思路是让这12个开关量(2*2+2*$)作为输入,通过逻辑处理,产生一个脉冲,脉冲送数字计时器,得到测量结果。我设想的逻辑为:
if a1,a2=0 or 4 then to_count_time=0
elseif 0
if b1,b2=0 or 2 then to_count_time=0
elseif 0
(a1=switch1_a+switch1_b+switch1_c+switch2_d,a1=a=switch2_a+switch2_b+switch2_c+switch2_d,b1=switch3_a+switch3_b,b2=switch4_a+switch4_b)
我思来想去,总觉得不对劲,逻辑不对,信号是并行的,语句是顺序执行的,无从下手,程序不会编。
不知道我有没有说清楚......waiting......