7125|32

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

VHDL写的乒乓球游戏,球动不了,求救高手! [复制链接]

点阵是16行16列的,第0行是用来显示球拍的。球拍从0列到15列每四个连点为表示一个状态,分别为P0到P3。

library IEEE;
use IEEE.STD_Logic_1164.all;
use IEEE.std_logic_unsigned.all;

entity DotMartixDisplay is
        port(       
                        reset:in std_logic;--重置,球拍位置 s0  
                        clk:in std_logic;   --球拍移动的 敏感  信号
                        lbt:in std_logic;   --球拍移动的控制信号,为1时向p3状态(点阵的右边)靠近,反之向p0
                        SClk:Buffer std_Logic;    --SWitch,切换 当前 点阵 显示 内容  的  敏感  信号   
                        CClk:in std_logic;   --球位置计算 敏感信号
                        row:out std_logic_vector(0 to 15);
                        lin:out std_logic_vector(0 to 15)
                        );
end entity;


architecture bhv of DotMartixDisplay is

  
--球拍
type BoardPosition is (p0,p1,p2,p3);--从左到右,每四个点构成一个状态
signal BdPs: BoardPosition;  --球拍的位置信号量

--球

Signal  HisBaPsR: Integer  Range 0 To 15:=0;--历史坐标    初始在最左下脚
Signal  HisBaPsL: Integer  Range 0 To 15:=0;
Signal  CurBaPsR: Integer  Range 0 To 15:=1;--当前坐标    (1,1)位置
Signal  CurBaPsL: Integer  Range 0 To 15:=1;
Signal  NexBaPsR,NexBaPsL: Integer  Range 0 To 15;--下一步坐标
Signal  DisplayBoard:Std_logic:='0'; --现在显示球的位置吗  ?不是则显示  球拍   
Signal  ToNext:Std_Logic:='0';--现在跳  到   下  一步  吗 ?否则 计算下一步  还

Signal WinScore: Integer Range 0 to 9:=0;  --击中球的次数
--Signal LosScore: Integer Range 0 to 9:=0;  --未击中球次数

Constant Tun:integer :=2;  --CClk 对 SClk的倍数
begin
Div_clk:    --使用分频器获得点阵上对输出 球拍/球 状态切换的敏感信号  。默认是Tun-1(1倍),即在第一次CCLK时计算下一个移动点,下一个CCLK时进行移动
        Process(CCLk)
                variable cnt:integer range 0 to 2048:=0;
                begin
                        if rising_edge(CClk) then
                                if (cnt                                         SClk<='1';
                                        cnt:=cnt+1;
                                elsif (cnt                                         SClk<='0';
                                        cnt:=cnt+1;
                                else
                                        cnt:=0;
                                end if;
                        end if;
        end Process;

ButtonDown:--按下球拍 控制键
        process(clk,reset)
        begin
        if reset='1' then         BdPs<=p0;--球拍的初始位置
        elsif rising_edge(clk) then --上升沿
                if lbt='1' then
                        if BdPs=p1 then BdPs <=p0;
                        elsif BdPs=p2 then BdPs <=p1;
                        elsif BdPs=p3 then BdPs <=p2;
                        end if ;
                else
                        if BdPs=p2 then BdPs <=p3;
                        elsif BdPs=p1 then BdPs <=p2;
                        elsif BdPs=p0 then BdPs <=p1;
                        end if ;
                end if;       
        end if;
        end Process;


ShowB:
        process(SClk)
        begin
        if rising_edge(SClk) then
                if DisplayBoard='1' then --显示球拍位置
                        case BdPs is
                                when p0 =>      
                                        row <="0111111111111111";
                                        lin <="1111000000000000";
                                when p1 =>
                                        row <="0111111111111111";
                                        lin <="0000111100000000";
                                when p2 =>
                                        row <="0111111111111111";
                                        lin <="0000000011110000";
                                when p3 =>
                                        row <="0111111111111111";
                                        lin <="0000000000001111";
                        end case;
                        DisplayBoard<='0';
                else --显示球的位置   
                        case CurBaPsR is --设置行信息
                                when 1 =>
                                        row<="1011111111111111";
                                when(...省略,针对CurBaPsR的其他15种可能取值控制点阵的行电平高低)   
                        end case;
                        case CurBaPsL is
                                when 0 =>
                                        lin<="1000000000000000";
                                when(...省略,针对CurBaPsL的其他15种可能取值控制点阵的列电平高低)   

                        end case;
                        DisPlayBoard<='1';
                end if;
                end if;
                end process;
       
NexBaPs:--计算球的位置
process(CClk)  --问题代码可能就这段,球在(0,0)位置不动,不移动到下一个点
        begin
if rising_edge(CClk) then
        if ToNext='0' then --上升沿 ,计算下一个位置
                if CurBaPsL=0 or CurBaPsL =15 then --碰到左右两边 的 墙壁
                        NexBaPsR <=CurBaPsR+(CurBaPsR-HisBaPsR);
                        NexBaPsL <=HisBaPsL;
                elsif CurBaPsR=15 then   --碰 到 顶端 的 墙壁
                        NexBaPsL <= CurBaPsL+(CurBaPsL-HisBaPsL);
                        NexBaPsR <=HisBaPsR;
                elsif CurBaPsR =0 then ---到达低端
                        if (
                                (CurBaPsL<4 and BdPs=p0) or
                                (CurBaPsL>3 and CurBaPsL<8 and BdPs=p1) or
                                (CurBaPsL>7 and CurBaPsL<12 and BdPs=p2) or
                                (CurBaPsL>11 and CurBaPsL<16 and BdPs=p3) ) then ---球拍击中球 了
                                 ---(显示加分 )
                       
                                ---计算下一个 位置
                                NexBaPsR <=CurBaPsR+(CurBaPsR-HisBaPsR);
                                NexBaPsL <=CurBaPsL+(CurBaPsL-HisBaPsL);
                --        else
                            --显示丢分
                         --设置丢分信息  CurBalL被 设定值 为 16   
                       
                        end if;
                else  --在平常 运动范围 内
                        NexBaPsR <= CurBaPsR+(CurBaPsR-HisBaPsR);
                --        NexBaPsR<=3;  没用  
                        NexBaPsL <= CurBaPsL+(CurBaPsL-HisBaPsL);
                end if ;
                ToNext<='1';
        else
                        HisBaPsL <=CurBaPsL;
        --                NexBaPsL <=NexBaPsL+1;     不工作
                        HisBaPsR <=CurBaPsR;
                        CurBaPsL <=NexBaPsL;
                        CurBaPsR <=NexBaPsR;
                ToNext<='0';
        end if ;
end if ;

end process;
end architecture bhv;

最新回复

对不起,各位,近几天发生了一些事情--不是很好的事情~ benjaminweber 说的15×16 的处理,可以让球的运动看起来更为真实些。Erwa提到可以跟球拍的运动方向来决定球的反弹路径,这让我想到了另外一种方法--既然球拍是用四个连续点来表示的,那依据撞击的点的不同来确定反弹路径: 1.如果击中的是球拍中间的两点之一,着反弹路径在45度反弹路径上发生在运动方向的平行移动 比如: ! × × × × × × × × × ! × × × × × × ^ × × ! × × × × ^ × × × × ! × × ^ × × × × - - @ - × × ×                  !到^表示运动路径,@表示击中的点 2.如果撞击的是球拍的左或右端点,则按45度角反弹 ! × × × × × × × × ! × × × × × ^ × × ! × × × ^ × × × × ! × ^ × × × - - - @ × × × 这样处理的话,那球拍移动的方式将要改为一个点一个点的运动,而不是四个点一个状态一个状态的转变。对于撞击到四个直角上的处理,则个按原路返回的方式。 大家怎么看?   详情 回复 发表于 2009-4-15 09:32
点赞 关注

回复
举报

61

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我晕,看不懂
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
其实并不复杂,可能是缩进上的问题,代码读起来....-_-! 再试次...
  1. library IEEE;
  2. use IEEE.STD_Logic_1164.all;
  3. use IEEE.std_logic_unsigned.all;

  4. entity DotMartixDisplay is
  5. port(
  6. reset:in std_logic;--重置,球拍位置 s0  
  7. clk:in std_logic;  --球拍移动的 敏感  信号
  8. lbt:in std_logic;  --球拍移动的控制信号,为1时向p3状态(点阵的右边)靠近,反之向p0
  9. SClk:Buffer std_Logic;    --SWitch,切换 当前 点阵 显示 内容  的  敏感  信号  
  10. CClk:in std_logic;  --球位置计算 敏感信号
  11. row:out std_logic_vector(0 to 15);
  12. lin:out std_logic_vector(0 to 15)
  13. );
  14. end entity;


  15. architecture bhv of DotMartixDisplay is

  16.   
  17. --球拍
  18. type BoardPosition is (p0,p1,p2,p3);--从左到右,每四个点构成一个状态
  19. signal BdPs: BoardPosition;  --球拍的位置信号量

  20. --球

  21. Signal  HisBaPsR: Integer  Range 0 To 15:=0;--历史坐标    初始在最左下脚
  22. Signal  HisBaPsL: Integer  Range 0 To 15:=0;
  23. Signal  CurBaPsR: Integer  Range 0 To 15:=1;--当前坐标    (1,1)位置
  24. Signal  CurBaPsL: Integer  Range 0 To 15:=1;
  25. Signal  NexBaPsR,NexBaPsL: Integer  Range 0 To 15;--下一步坐标
  26. Signal  DisplayBoard:Std_logic:='0'; --现在显示球的位置吗  ?不是则显示  球拍  
  27. Signal  ToNext:Std_Logic:='0';--现在跳  到  下  一步  吗 ?否则 计算下一步  还

  28. Signal WinScore: Integer Range 0 to 9:=0;  --击中球的次数
  29. --Signal LosScore: Integer Range 0 to 9:=0;  --未击中球次数

  30. Constant Tun:integer :=2;  --CClk 对 SClk的倍数
  31. begin
  32. Div_clk:    --使用分频器获得点阵上对输出 球拍/球 状态切换的敏感信号  。默认是Tun-1(1倍),即在第一次CCLK时计算下一个移动点,下一个CCLK时进行移动
  33. Process(CCLk)
  34.   variable cnt:integer range 0 to 2048:=0;
  35.    begin
  36.        if rising_edge(CClk) then
  37.          if (cnt
  38.             SClk <='1';
  39.             cnt:=cnt+1;
  40.           elsif (cnt
  41.             SClk <='0';
  42.             cnt:=cnt+1;
  43.           else
  44.             cnt:=0;
  45.          end if;
  46.        end if;
  47. end Process;

  48. ButtonDown:--按下球拍 控制键
  49. process(clk,reset)
  50. begin
  51.        if reset='1' then BdPs <=p0;--球拍的初始位置
  52.           elsif rising_edge(clk) then --上升沿
  53.                  if lbt='1' then
  54.                   if BdPs=p1 then BdPs <=p0;
  55.                    elsif BdPs=p2 then BdPs <=p1;
  56.                    elsif BdPs=p3 then BdPs <=p2;
  57.                   end if ;
  58.                else
  59.                   if BdPs=p2 then BdPs <=p3;
  60.                     elsif BdPs=p1 then BdPs <=p2;
  61.                     elsif BdPs=p0 then BdPs <=p1;
  62.                   end if ;
  63.                end if;
  64.       end if;
  65. end Process;


  66. ShowB:
  67. process(SClk)
  68. begin
  69. if rising_edge(SClk) then
  70.   if DisplayBoard='1' then --显示球拍位置
  71.        case BdPs is
  72.              when p0 =>      
  73.                     row <="0111111111111111";
  74.                     lin <="1111000000000000";
  75.              when p1 =>
  76.                     row <="0111111111111111";
  77.                     lin <="0000111100000000";
  78.              when p2 =>
  79.                     row <="0111111111111111";
  80.                     lin <="0000000011110000";
  81.              when p3 =>
  82.                     row <="0111111111111111";
  83.                     lin <="0000000000001111";
  84.       end case;
  85.       DisplayBoard <='0';
  86.    else --显示球的位置  
  87.            case CurBaPsR is --设置行信息
  88.                   when 1 =>
  89.                       row <="1011111111111111";
  90.                 when(...省略,针对CurBaPsR的其他15种可能取值控制点阵的行电平高低)  
  91.            end case;
  92.           case CurBaPsL is
  93.                when 0 =>
  94.                       lin <="1000000000000000";
  95.                 when(...省略,针对CurBaPsL的其他15种可能取值控制点阵的列电平高低)  

  96.            end case;
  97.         DisPlayBoard <='1';
  98.      end if;
  99. end if;
  100. end process;

  101. NexBaPs:--计算球的位置
  102. [color=#FF0000] process(CClk)[/color]  --问题代码可能就这段,球在(0,0)位置不动,不移动到下一个点
  103.     begin
  104.        if rising_edge(CClk) then
  105.           if ToNext='0' then --上升沿 ,计算下一个位置
  106.                if CurBaPsL=0 or CurBaPsL =15 then --碰到左右两边 的 墙壁
  107.                    NexBaPsR <=CurBaPsR+(CurBaPsR-HisBaPsR);
  108.                  NexBaPsL <=HisBaPsL;
  109.             elsif CurBaPsR=15 then  --碰 到 顶端 的 墙壁
  110.                     NexBaPsL <= CurBaPsL+(CurBaPsL-HisBaPsL);
  111.                  NexBaPsR <=HisBaPsR;
  112.             elsif CurBaPsR =0 then ---到达低端
  113.                  if (
  114.                     (CurBaPsL <4 and BdPs=p0) or
  115.                     (CurBaPsL>3 and CurBaPsL <8 and BdPs=p1) or
  116.                     (CurBaPsL>7 and CurBaPsL <12 and BdPs=p2) or
  117.                     (CurBaPsL>11 and CurBaPsL <16 and BdPs=p3) ) then ---球拍击中球 了
  118.                               ---计算下一个 位置
  119.                                   NexBaPsR <=CurBaPsR+(CurBaPsR-HisBaPsR);
  120.                               NexBaPsL <=CurBaPsL+(CurBaPsL-HisBaPsL);
  121.                end if;
  122.             else  --在平常 运动范围 内
  123.                     NexBaPsR <= CurBaPsR+(CurBaPsR-HisBaPsR);
  124.                  NexBaPsL <= CurBaPsL+(CurBaPsL-HisBaPsL);
  125.             end if ;
  126.             ToNext <='1';
  127.       else
  128.                 HisBaPsL <=CurBaPsL;
  129.                 HisBaPsR <=CurBaPsR;
  130.                 CurBaPsL <=NexBaPsL;
  131.                 CurBaPsR <=NexBaPsR;
  132.                 ToNext <='0';
  133.       end if ;
  134.     end if ;
  135. end process;
  136. end architecture bhv;
复制代码
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
没人知道怎么解决吗?今天上午去实验室查错了,想了改改了想,回过头--还是在那不动~~
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 
关注
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

6
 
NexBaPsR <=CurBaPsR+(CurBaPsR-HisBaPsR);
NexBaPsL <= CurBaPsL+(CurBaPsL-HisBaPsL);
这两句话是不是错了?
NexBaPsR <=CurBaPsR+(HisBaPsR-CurBaPsR);
NexBaPsL <= CurBaPsL+(HisBaPsL-CurBaPsL);
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 
是计算上吗?应该是没有哦,是求一个二等分向量的第三个点。
历史H=(0,0),当前C=(1,1),则下一个点N=(2,2)
   h*--->C*--->H*
 
 
 

回复

56

帖子

0

TA的资源

一粒金砂(初级)

8
 
uping
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

9
 
谢~
正在实验室,刚将(显示与计算下一个位置)和 更新位置信息 放到同一个进程中了。但结果还是一样--球在(0,0)处不动。
是算法问题?可看上去没有啊~~
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

10
 
我说的是碰壁的时候的那个计算,不是正常时候的
if CurBaPsL=0 or CurBaPsL =15

CurBaPsR=15 then
的时候的计算我认为不太对
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

11
 
if CurBaPsL=0 or CurBaPsL =15 then --碰到左右两边 的 墙壁
   NexBaPsR <=CurBaPsR+(CurBaPsR-HisBaPsR);
   NexBaPsL <=HisBaPsL;
elsif CurBaPsR=15 then  --碰 到 顶端 的 墙壁
   NexBaPsL <= CurBaPsL+(CurBaPsL-HisBaPsL);
   NexBaPsR <=HisBaPsR;
else....
这段应该是没问题的,以从左到右撞击顶端为例:
^
|
|  ------*C(7,15)--------
|  -----/        \-------
|  ---*H(6,14)--*N(8,14)-
R/L——————————————————————>
上述判断是符合实际情况的.
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

12
 
mark
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

13
 
关注
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

14
 
按你写的逻辑
h(0,1) C(0,0) -> N(0,-1)
h(1,0) C(0,0) -> n(0,0)
h(1,1) C(0,0) -> n(0,-1)
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

15
 
写错了
h(1,0) c(0,0) -> n(1,0)
h(0,1) c(0,0) -> n(0,-1)  since n is range 0-15 == n(0,0)
h(1,1) c(0,0) -> n(1,-1) since n is range 0-15 == n(1,0)
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

16
 
代码不好,最后一个进程是双沿都作用吗?为什么不写成只是上升沿作用呢?
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

17
 
benjaminweber说的,
1.(0,1) 是接触到点阵的最左边,那预想的下一个点是(1,1)或(1,0)--从左弹到右边或是从右弹到左边,不会出现  h(0,1)&&C(0,0) 的情况
2.(1,0) 时则下一个坐标点是(0,1)或(2,1),也会出现 h(1,0)&&C(0,0)情况
3.球以(0,0)为历史点(1,1)为最开始起点时运动,是可以运动到(1,1)的,这时它的下一个坐标可以是(0,0),按照算法来看...
-_-!,当然,球拍可能不在p0位置是吗?(joke)但愿...
  的确没考虑到这点,修改中...

 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

18
 
benjaminweber说的,
1.(0,1) 是接触到点阵的最左边,那预想的下一个点是(1,1)或(1,0)--从左弹到右边或是从右弹到左边,不会出现  h(0,1)&&C(0,0) 的情况
2.(1,0) 时则下一个坐标点是(0,1)或(2,1),也不会出现 h(1,0)&&C(0,0)情况
3.球以(0,0)为历史点(1,1)为最开始起点时运动,是可以运动到(1,1)的,这时它的下一个坐标可以是(0,0),按照算法来看...
-_-!,当然,球拍可能不在p0位置是吗?(joke)但愿...
  的确没考虑到这点,修改中...
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

19
 
你没考虑CurBaP在四个角的情况吧???   (0,0)(0,15)(15,0)(15,15)



NexBaPs:--计算球的位置
process(CClk)  --问题代码可能就这段,球在(0,0)位置不动,不移动到下一个点
    begin
       if rising_edge(CClk) then
               if ToNext='0' then --上升沿 ,计算下一个位置
                       if CurBaPsR=0 and CurBaPsL=0 then
                               if HisBaPsR=1 and CurBaPsL=1 then
                                       CurBaPsR<=1;
                                       CurBaPsL<=1;
                               end if;
                       elsif CurBaPsR=0 and CurBaPsL=15 then
                               if HisBaPsR=1 and CurBaPsL=14 then
                                       CurBaPsR<=1;
                                       CurBaPsL<=14;
                               end if;              
                       elsif CurBaPsR=15 and CurBaPsL=0 then
                               if HisBaPsR=14 and CurBaPsL=1 then
                                       CurBaPsR<=14;
                                       CurBaPsL<=1;
                               end if;              
                       elsif CurBaPsR=15 and CurBaPsL=15 then
                               if HisBaPsR=14 and CurBaPsL=14 then
                                       CurBaPsR<=14;
                                       CurBaPsL<=14;
                               end if;  
                       elsif CurBaPsL=0 or CurBaPsL =15 then --碰到左右两边 的 墙壁
                               NexBaPsR<=CurBaPsR+CurBaPsR+(CurBaPsR-HisBaPsR);
                               NexBaPsL <=HisBaPsL;
                       elsif CurBaPsR=15 then
                               NexBaPsL <= CurBaPsL+(CurBaPsL-HisBaPsL);   
                               NexBaPsR <=HisBaPsR;           
                       elsif CurBaPsR =0 then ---到达低端
                               if ((CurBaPsL <4 and BdPs=p0) or
                                   (CurBaPsL>3 and CurBaPsL <8 and BdPs=p1) or
                                   (CurBaPsL>7 and CurBaPsL <12 and BdPs=p2) or
                                   (CurBaPsL>11 and CurBaPsL <16 and BdPs=p3) ) then ---球拍击中球 了 ---计算下一个 位置
                                   NexBaPsR <=CurBaPsR+(CurBaPsR-HisBaPsR);
                                   NexBaPsL <=CurBaPsL+(CurBaPsL-HisBaPsL);
                               end if;
                       else  --在平常 运动范围 内
                               NexBaPsR <= CurBaPsR+(CurBaPsR-HisBaPsR);
                               NexBaPsL <= CurBaPsL+(CurBaPsL-HisBaPsL);
                       end if;
                       ToNext<='1';
               else
                       HisBaPsL <=CurBaPsL;
                       HisBaPsR <=CurBaPsR;
                       CurBaPsL <=NexBaPsL;
                       CurBaPsR <=NexBaPsR;
                       ToNext <='0';
               end if;
      end if;
end process;
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

20
 
[code]
NexBaPs:--计算球的位置
process(CClk)  --问题代码可能就这段,球在(0,0)位置不动,不移动到下一个点
    begin
       if rising_edge(CClk) then
               if ToNext='0' then --上升沿 ,计算下一个位置
                       if CurBaPsR=0 and CurBaPsL=0 then
                               if HisBaPsR=1 and CurBaPsL=1 then
                                       CurBaPsR<=1;
                                       CurBaPsL<=1;
                               end if;
                       elsif CurBaPsR=0 and CurBaPsL=15 then
                               if HisBaPsR=1 and CurBaPsL=14 then
                                       CurBaPsR<=1;
                                       CurBaPsL<=14;
                               end if;              
                       elsif CurBaPsR=15 and CurBaPsL=0 then
                               if HisBaPsR=14 and CurBaPsL=1 then
                                       CurBaPsR<=14;
                                       CurBaPsL<=1;
                               end if;              
                       elsif CurBaPsR=15 and CurBaPsL=15 then
                               if HisBaPsR=14 and CurBaPsL=14 then
                                       CurBaPsR<=14;
                                       CurBaPsL<=14;
                               end if;  
                       elsif CurBaPsL=0 or CurBaPsL =15 then --碰到左右两边 的 墙壁
                               NexBaPsR<=CurBaPsR+CurBaPsR+(CurBaPsR-HisBaPsR);
                               NexBaPsL <=HisBaPsL;
                       elsif CurBaPsR=15 then
                               NexBaPsL <= CurBaPsL+(CurBaPsL-HisBaPsL);   
                               NexBaPsR <=HisBaPsR;           
                       elsif CurBaPsR =0 then ---到达低端
                               if ((CurBaPsL <4 and BdPs=p0) or
                                   (CurBaPsL>3 and CurBaPsL <8 and BdPs=p1) or
                                   (CurBaPsL>7 and CurBaPsL <12 and BdPs=p2) or
                                   (CurBaPsL>11 and CurBaPsL <16 and BdPs=p3) ) then ---球拍击中球 了 ---计算下一个 位置
                                   NexBaPsR <=CurBaPsR+(CurBaPsR-HisBaPsR);
                                   NexBaPsL <=CurBaPsL+(CurBaPsL-HisBaPsL);
                               end if;
                       else  --在平常 运动范围 内
                               NexBaPsR <= CurBaPsR+(CurBaPsR-HisBaPsR);
                               NexBaPsL <= CurBaPsL+(CurBaPsL-HisBaPsL);
                       end if;
                       ToNext<='1';
               else
                       HisBaPsL <=CurBaPsL;
                       HisBaPsR <=CurBaPsR;
                       CurBaPsL <=NexBaPsL;
                       CurBaPsR <=NexBaPsR;
                       ToNext <='0';
               end if;
      end if;
end process;
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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