基于FPGA的计算器设计程序出错

2019-07-18 08:33发布

我在做基于FPGA的计算器设计时,用Quartus Ⅱ 13.1写的程序,但写完8位二进制转化个位,十位,百位的进程程序后,编译时,在ctrview:PROCESS(c,clk)
BEGIN这一行时一直出错,有没有大佬帮忙解一下。
  1. LIBRARY IEEE;
  2. USE IEEE.STD_LOGIC_1164.ALL;
  3. USE IEEE.STD_LOGIC_ARITH.ALL;
  4. USE IEEE.STD_LOGIC_UNSIGNED.ALL;
  5. ENtiTY vdecode IS   --7段译码译码器做显示
  6.         PORT(indata:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
  7.                 outdata:OUT STD_LOGIC_VECTOR(0 TO 6));
  8. END ENTITY vdecode;
  9. ARCHITECTURE behave OF vdecode IS
  10. BEGIN
  11. WITH indata SELECT
  12. outdata<="1111110"WHEN"0000",              -- 显示0
  13.                         "0110000"WHEN"0001",              -- 显示1
  14.                         "l101101"WHEN"0010",              -- 显示2
  15.                         "1111001"WHEN"0011",
  16.                         "0110011"wHEN"0100",
  17.                         "1011011"WHEN"0101",
  18.                         "1011111"WHEN"0110",
  19.                         "1110000"WHEN"0111",
  20.                         "1111111"WHEN"1000",
  21.                         "1101111"WHEN"1001",              -- 显示9
  22.                         "0000000"WHEN OTHERS;
  23. END ARCHITECTURE behave;
  24. ctrview:PROCESS(c,clk)--二进制转换成千位,百位,十位,个位以送至译码器
  25. BEGIN
  26.                 IF c='1'THEN
  27.                         view1<="0000";view2<="0000";view3<="0000";view4<="0000";
  28.                         viewstep<=takenum;
  29.                 ELSIF clk'EVENT AND clk='1'THEN
  30.                         CASE viewstep IS
  31.                                 WHEN takenum=>
  32.                                         ktemp<=keep;
  33.                                 WHEN thousand=>   --产生千位数字
  34.                                 IF ktemp>="0010001100101000"THEN
  35.                                         view1<="1001";ktemp<=ktemp-"0010001100101000";
  36.                                 ELSIF ktemp>="0001111101000000"THEN
  37.                                         view1<="1000";ktemp<=ktemp-"0001111101000000";
  38.                                 ELSIF ktemp>="0001101101011000"THEN
  39.                                         view1<="0111";ktemp<=ktemp-"0001101101011000";
  40.                                 ELSIF ktemp>="000101110111000"THEN
  41.                                         view1<="0110";ktemp<=ktemp-"0001011101110000";
  42.                                 ELSIF ktemp>="0001001110001000"THEN
  43.                                         view1<="0101";ktemp<=ktemp-"0001001110001000";
  44.                                 ELSIF ktemp>="0000111110100000"THEN
  45.                                         view1<="0100";ktemp<=ktemp-"0000111110100000";
  46.                                 ELSIF ktemp>="0000101110111000"THEN
  47.                                         view1<="0011";ktemp<=ktemp-"0000101110111000";
  48.                                 ELSIF ktemp>="0000011111010000"THEN
  49.                                         view1<="0010";ktemp<=ktemp-"0000011111010000";
  50.                                 ELSIF ktemp>="0000001111101000"THEN
  51.                                         view1<="0001";ktemp<=ktemp-"0000001111101000";
  52.                                 ELSE view1<="0000";
  53.                                 END IF;
  54.                                         viewstep<=hundred;    --产生百位数字
  55.                                 WHEN hundred=>
  56.                                         IF ktemp>="0000001110000100"THEN
  57.                                         view2<="1001";ktemp<=ktemp-"0000001110000100";
  58.                                 ELSIF ktemp>="0000001100100000"THEN
  59.                                         view2<="1000";ktemp<=ktemp-"0000001100100000";
  60.                                 ELSIF ktemp>="0000001010111100"THEN
  61.                                         view2<="0111";ktemp<=ktemp-"0000001010111100";
  62.                                 ELSIF ktemp>="0000001001011000"THEN
  63.                                         view2<="0110";ktemp<=ktemp-"0000001001011000";
  64.                                 ELSIF ktemp>="0000000111110100"THEN
  65.                                         view2<="0101";ktemp<=ktemp-"0000000111110100";
  66.                                 ELSIF ktemp>="0000000110010000"THEN
  67.                                         view2<="0100";ktemp<=ktemp-"0000000110010000";
  68.                                 ELSIF ktemp>="0000000000011110"THEN
  69.                                         view2<="0011";ktemp<=ktemp-"0000000000011110";
  70.                                         IF ktemp>="11001000"THEN
  71.                                         view2<="0010";ktemp<=ktemp-"0000000011001000";
  72.                                 ELSIF ktemp>="0000000001100100"THEN
  73.                                         view2<="0001";ktemp<=ktemp-"0000000001100100";    --百位为1,ktemp-100
  74.                                 ELSE vIew2<="0000";       --百位为0
  75.                                 END IF;
  76.                                         viewstep<=ten;
  77.                                 WHEN ten=>                --产生十位数字
  78.                                 IF ktemp>="0000000001011010"THEN
  79.                                         view1<="1001";ktemp<=ktemp-"0000000001011010";
  80.                                 ELSIF ktemp>="0000000001010000"THEN
  81.                                         view1<="1000";ktemp<=ktemp."0000000001010000";
  82.                                 ELSIF ktemp>="0000000001000110"THEN
  83.                                         view1<="0111";ktemp<=ktemp-"0000000001000110";
  84.                                 ELSIF ktemp>="0000000000111100"THEN
  85.                                         view1<="0110";ktemp<=ktemp-"0000000000111100";
  86.                                 ELSIF ktemp>="0000000000110010"THEN
  87.                                         view1<="010l";ktemp<=ktemp-"00000000000110010";
  88.                                 ELSIF ktemp>="0000000000101000"THEN
  89.                                         view1<="0100";ktemp<=ktemp-"0000000000101000";
  90.                                 ELSIF ktemp>="0000000000011110"THEN
  91.                                         view1<="0011";ktemp<=ktemp-"0000000000011110";
  92.                                 ELSIF ktemp>="0000000000010100"THEN
  93.                                         view1<="0010";ktemp<=ktemp-"0000000000010100";
  94.                                 ELSIF ktemp>="0000101000000000"THEN
  95.                                         view1<="0001";ktemp<=ktemp-"0000101000000000";
  96.                                 ELSE view1<="0000";
  97.                                 END IF;
  98.                                         viewsteps<=one;
  99.                                 WHEN one=>                        --产生个位数字
  100.                                         view4<=ktemp(3 DOWNTO 0);
  101.                                         viewstep<=takenum;
  102.                         WHEN OTHERS=>NULL;
  103.                         END CASE;
  104.                         END IF;
  105. END PROCESS ctrview;
复制代码


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。