8位二进制转化个位,十位,百位的进程程序一直出错

2019-07-17 07:53发布

我在做基于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";
  28.                 viewstep<=takenum;
  29.         ELSIF clk'EVENT AND clk='1'THEN
  30.                 CASE viewstep IS
  31.                         when takenun=>
  32.                                 ktemp<=keep;
  33.                                 viewstep<=hundred;
  34.                         When hundred=>
  35.                                 IF ktemp>="11001000"THEN     --如果ktemp大于200
  36.                                         view1<="0010";ktemp<=ktemp-"11001000"     --百位为2,ktemp--200
  37.                                 ElSIF ktemp>="01100100"THEN  --如果ktemp大于100
  38.                                         vew1<="0001"ktemp<=ktemp-"01100100";      --百位为1,ktemp--100
  39.                                 else view1<="0000"    --百位为0
  40.                                 END iF;
  41.                                         viewstep<=ten;
  42.                         when ten=>          --产生十位数字
  43.                                 if ktemp>="01011010"THEN
  44.                                         view2<="1001";ktemp<=ktemp-"01011010";
  45.                                 ELSIF ktemp>="01010000"THEN
  46.                                         view2<="1000";ktemp<=ktemp-"01010000";
  47.                                 elSiF ktemp>="01000110"THEN
  48.                                         view2<="0111";ktemp<=ktemp-"01000110";
  49.                                 ELSIF ktemp>="00111100"THEN
  50.                                         view2<="0110";ktemp<=ktemp-"00111100";
  51.                                 elSiF ktemp>="00110010"THEN
  52.                                         view2<="010l";ktemp<=ktemp-"00110010";
  53.                                 ELSIF ktemp>="00101000"THEN
  54.                                         view2<="0100";ktemp<=ktemp-"00101000";
  55.                                 ELSIF ktemp>="00011110"THEN
  56.                                         view2<="0011";ktemp<=ktemp-"00011110";
  57.                                 ElSIF ktemp>="00010100"THEN
  58.                                         view2<="0010";ktemp<=ktemp-"00010100";
  59.                                 ELSIF ktemp>="00001010"THEN
  60.                                         view2<="0001";ktemp<=ktemp-"00001010";
  61.                                 ELSE view2<="0000";
  62.                                 END IF;
  63.                                         viewstep<=one
  64.                                 When one=>            --产生个位数字
  65.                                         view3<=ktemp(3 DOWNTO 0);
  66.                                         viewstep<=takeup;
  67.                                 WHEN OTHERS=>NULL;
  68.                         END CASE;
  69.                         END IF;
  70. END PROCESS ctrview;
复制代码

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