3366|3

82

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

vhdl编的程序,不知道问题出在哪!求解决方法。 [复制链接]

LIBRARY IEEE;
   USE IEEE.std_logic_1164.ALL;

ENTITY syn_test IS
  PORT(
   sw1_a      :IN  STD_LOGIC;
   sw1_b      :IN  STD_LOGIC;
   sw1_c      :IN  STD_LOGIC;
   sw1_d      :IN STD_LOGIC;             -----开关一的abcd子开关

   sw2_a      :IN  STD_LOGIC;
   sw2_b      :IN  STD_LOGIC;
   sw2_c      :IN  STD_LOGIC;            
   sw2_c      :IN  STD_LOGIC;             ----开关2的abcabcd子开关
  

   sw3_a      :IN  STD_LOGIC;
   sw3_c      :IN  STD_LOGIC;             -------开关3的ac子开关

   sw4_a      :IN  STD_LOGIC;
   sw4_b      :IN  STD_LOGIC;
   sw4_c      :IN  STD_LOGIC;
   sw4_d      :IN STD_LOGIC;

   sw5_a      :IN  STD_LOGIC;
   sw5_b      :IN  STD_LOGIC;
   sw5_c      :IN  STD_LOGIC;
   sw5_d      :IN STD_LOGIC;

   sw6_a      :IN  STD_LOGIC;
   sw6_b      :IN  STD_LOGIC;
   sw6_c      :IN  STD_LOGIC;
   sw6_d      :IN STD_LOGIC;

   sw7_a      :IN  STD_LOGIC;
   sw7_b      :IN  STD_LOGIC;
   sw7_c      :IN  STD_LOGIC;
   sw7_d      :IN STD_LOGIC;

   sw8_a      :IN  STD_LOGIC;
   sw8_b      :IN  STD_LOGIC;
   sw8_c      :IN  STD_LOGIC;
   sw8_d      :IN STD_LOGIC;

   sw9_a      :IN  STD_LOGIC;
   sw9_c      :IN  STD_LOGIC;

   sw10_a     :IN  STD_LOGIC;
   sw10_c      :IN  STD_LOGIC;          -----开关十的ac子开关

   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
感觉是数据类型的问题,貌似信号不能直接相加,我该怎么办?如何解决这个问题?

最新回复

一楼的,输入信号都是并行的,判断买个开关量是有时间延迟的吧?用什么结构,什么语句?  详情 回复 发表于 2008-1-11 10:46
点赞 关注

回复
举报

93

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
是不能用+的。。。开关量啊。。。
建一个变量,判断每个开关量,如果是 1  则加1,得到变量判断即可。。。
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
想了很久,程序还是没法子编。哎......
我把问题说清楚,我把要实现的功能简化一下,帮我把程序编出来吧,我觉得很简单,就是无从下手。
说明如下:有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......
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
一楼的,输入信号都是并行的,判断买个开关量是有时间延迟的吧?用什么结构,什么语句?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表