数电实验 - 图文 联系客服

发布时间 : 星期三 文章数电实验 - 图文更新完毕开始阅读

4.控制模块

library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;

entity controller is

port( reset : in std_logic; clk : in std_logic;

g_matrix0:out std_logic_vector(7 downto 0); g_matrix1:out std_logic_vector(7 downto 0); g_matrix2:out std_logic_vector(7 downto 0); g_matrix3:out std_logic_vector(7 downto 0); g_matrix4:out std_logic_vector(7 downto 0); g_matrix5:out std_logic_vector(7 downto 0); g_matrix6:out std_logic_vector(7 downto 0); g_matrix7:out std_logic_vector(7 downto 0);

r_matrix0:out std_logic_vector(7 downto 0); r_matrix1:out std_logic_vector(7 downto 0); r_matrix2:out std_logic_vector(7 downto 0); r_matrix3:out std_logic_vector(7 downto 0); r_matrix4:out std_logic_vector(7 downto 0); r_matrix5:out std_logic_vector(7 downto 0); r_matrix6:out std_logic_vector(7 downto 0); r_matrix7:out std_logic_vector(7 downto 0); to_display:out std_logic_vector(41 downto 0); message1: in std_logic_vector(7 downto 0) ); End controller ;

architecture one of controller is

type matrix_type IS array (7 downto 0) of std_logic_vector (7 downto 0); type yima IS array(9 downto 0) of std_logic_vector(6 downto 0); signal g_matrix : matrix_type; -----matrix ê??t??8*8êy×é£?D?o? signal r_matrix : matrix_type; -----matrix ê??t??8*8êy×é£?D?o? constant data :

yima:=(\,\,\,\,\,\,\,\,\,\);

constant goal: std_logic_vector(7 downto 0):=\; constant kong: std_logic_vector(7 downto 0):=\;

signal count: integer range 0 to 9:=0;

signal g_x: integer range 0 to 9:=5;

signal g_y: integer range 0 to 9:=2; --绿色队员横纵坐标 signal r_x: integer range 0 to 9:=5;

signal r_y: integer range 0 to 9:=2; --红色队员横纵坐标 signal b_x: integer range 0 to 9:=5;

signal b_y: integer range 0 to 9:=2; --足球横纵坐标

signal g_shi:integer range 0 to 9:=0; signal g_ge:integer range 0 to 9:=0; signal r_shi:integer range 0 to 9:=0; signal r_ge:integer range 0 to 9:=0; signal t_shi:integer range 0 to 9:=0; signal t_ge:integer range 0 to 9:=0;

signal display: std_logic_vector(41 downto 0); signal state: integer range 0 to 3:=0; --动作状态 --signal R_x: integer:=4; --signal R_y: integer:=7; signal start: std_logic:='0'; Begin

g_matrix0<=g_matrix(0); g_matrix1<=g_matrix(1); g_matrix2<=g_matrix(2); g_matrix3<=g_matrix(3); g_matrix4<=g_matrix(4); g_matrix5<=g_matrix(5);

g_matrix6<=g_matrix(6); g_matrix7<=g_matrix(7);

r_matrix0<=r_matrix(0); r_matrix1<=r_matrix(1); r_matrix2<=r_matrix(2); r_matrix3<=r_matrix(3); r_matrix4<=r_matrix(4); r_matrix5<=r_matrix(5); r_matrix6<=r_matrix(6); r_matrix7<=r_matrix(7); to_display<=display;

process (message1,reset,clk) -控制球员的前进进程

variable S:integer:=state; --variable g_y:integer; --variable r_x:integer; --variable r_y:integer; --variable b_x:integer; --variable b_y:integer; begin

S:=state; case reset IS when '0'=> g_x<=5;g_y<=2; r_x<=4;r_y<=7; b_x<=4;b_y<=4; g_shi<=0;r_shi<=0; g_ge<=0;r_ge<=0; state<=0;

when others=>

if(t_ge+t_shi=0) then

if((g_shi*10+g_ge) >(r_shi*10+r_ge) ) then

g_matrix(0)<=\; g_matrix(1)<=\; g_matrix(2)<=\; g_matrix(3)<=\; g_matrix(4)<=\; g_matrix(5)<=\; g_matrix(6)<=\; g_matrix(7)<=\;

r_matrix(0)<=\; r_matrix(0)<=\; r_matrix(0)<=\; r_matrix(0)<=\; r_matrix(0)<=\; r_matrix(0)<=\; r_matrix(0)<=\; r_matrix(0)<=\; else

if (g_shi*10+g_ge)=(r_shi*10+r_ge) then g_matrix(0)<=\; g_matrix(1)<=\; g_matrix(2)<=\; g_matrix(3)<=\; g_matrix(4)<=\; g_matrix(5)<=\; g_matrix(6)<=\; g_matrix(7)<=\;

r_matrix(0)<=\; r_matrix(0)<=\; r_matrix(0)<=\; r_matrix(0)<=\; r_matrix(0)<=\; r_matrix(0)<=\; r_matrix(0)<=\; r_matrix(0)<=\;

else r_matrix(0)<=\;