搜索
bottom↓
回复: 9

vhdl语法没搞懂。帖子中报n个语法错误。请高手帮忙

[复制链接]

出0入0汤圆

发表于 2013-7-12 16:01:15 | 显示全部楼层 |阅读模式
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
entity Delay1 is
port(
       CLK,SYNC:in bit;
       Delay:out bit
       );
end;

architecture DELAY of Delay1 is

signal dlyen: std_logic;

Process(CLK,SYNC)
  Variable cnt1,cnt2,cnt3,dly_en1,dly_en  : integer:=0;
begin  
  dlyen<=SYNC or dly_en;
  if(dlyen='0') then
    Delay<='0';
    elsif CLK'event and CLK='1' then
      if cnt3<30 then
          dly_en<='1';cnt3:=cnt3+1;
      else
          dly_en<='0';cnt3:=0;
      end if;
      if cnt1>=20 then
        dly_en1:=1;
      else cnt1:=cnt1+1;
      end if;
      if dly_en1=1 then
        if cnt2>=10 then
        dly_en1:=0; cnt1:=0;cnt2:=0;
      else cnt2:=cnt2+1;
     end if;
  end if;
end if;
end process;
end;

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入4汤圆

发表于 2013-7-12 16:12:03 | 显示全部楼层
把错误贴上来

出0入0汤圆

 楼主| 发表于 2013-7-12 16:16:53 | 显示全部楼层
Error (10500): VHDL syntax error at DELAY1.vhd(16) near text "Process";  expecting "begin", or a declaration statement
Error (10500): VHDL syntax error at DELAY1.vhd(22) near text "if";  expecting "end", or "(", or an identifier ("if" is a reserved keyword), or a concurrent statement
Error (10500): VHDL syntax error at DELAY1.vhd(22) near text "then";  expecting "<="
Error (10500): VHDL syntax error at DELAY1.vhd(24) near text "elsif";  expecting "end", or "(", or an identifier ("elsif" is a reserved keyword), or a concurrent statement
Error (10500): VHDL syntax error at DELAY1.vhd(24) near text "and";  expecting "(", or "'", or "."
Error (10500): VHDL syntax error at DELAY1.vhd(26) near text ":=";  expecting "(", or "'", or "."
Error (10500): VHDL syntax error at DELAY1.vhd(28) near text ":=";  expecting "(", or "'", or "."
Error: Quartus II Create Symbol File was unsuccessful. 7 errors, 0 warnings
        Info: Allocated 184 megabytes of memory during processing
        Error: Processing ended: Fri Jul 12 15:57:16 2013
        Error: Elapsed time: 00:00:02

出0入0汤圆

 楼主| 发表于 2013-7-12 16:21:53 | 显示全部楼层
gagmeng 发表于 2013-7-12 16:12
把错误贴上来

新手,谢谢指导。

出0入0汤圆

发表于 2013-7-12 16:36:00 | 显示全部楼层
本帖最后由 avrwoo 于 2013-7-12 16:37 编辑

第一个错误,结构体的BEGIN丢了。另外整形的变量通常要限定范围,如INTEGER RANGE 0 TO 10;

出0入0汤圆

发表于 2013-7-13 11:51:27 | 显示全部楼层
语法基本正确,少个begin ,数据类型没完全搞清。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
entity Delay1 is
port(
       CLK,SYNC:in std_logic;
       Delay:out std_logic
       );
end;
architecture DELAY of Delay1 is
signal dlyen,dly_en: std_logic;
begin  
Process(CLK,SYNC)
Variable cnt1,cnt2,cnt3,dly_en1: integer:=0;
begin  
  if((dly_en='0')and(dlyen='0')) then
    Delay<='0';
    elsif CLK'event and CLK='1' then
      if cnt3<30 then
          dly_en<='1';cnt3:=cnt3+1;
      else
          dly_en<='0';cnt3:=0;
      end if;
      if cnt1>=20 then
        dly_en1:=1;
      else cnt1:=cnt1+1;
      end if;
      if dly_en1=1 then
        if cnt2>=10 then
        dly_en1:=0; cnt1:=0;cnt2:=0;
      else cnt2:=cnt2+1;
     end if;
  end if;
end if;
end process;
end;

出0入0汤圆

 楼主| 发表于 2013-7-15 14:14:05 | 显示全部楼层
呵呵,水平太差,没爬就开始跑了。最近再看看书,学习学习

出0入0汤圆

 楼主| 发表于 2013-7-15 15:28:36 | 显示全部楼层
40130064 发表于 2013-7-13 11:51
语法基本正确,少个begin ,数据类型没完全搞清。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

没有了sync,逻辑好像有问题吧

出0入0汤圆

发表于 2013-7-16 08:33:51 | 显示全部楼层
if((dly_en='0')and(sync='0')) then
还是换个语言吧,用这个的人相对少了。虽然我个人还是觉得VHDL好点。

出0入0汤圆

 楼主| 发表于 2013-7-16 12:38:12 | 显示全部楼层
公司的规定,没办法。硬件电路设计,临时安排干干这个
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 05:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表