⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bus_51.vhd

📁 DDS锯齿波发生器: 开发平台:maxplus+FPGA 功能: 输出X路扫屏锯齿波。频率可用键盘精确控制
💻 VHD
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY BUS_51 IS
PORT(P0I: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
     P0T: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
     ALE,RD,WR,CLK: IN STD_LOGIC;
     GX,CLR: OUT STD_LOGIC;
     PDATA,FDATA: OUT STD_LOGIC_VECTOR(15 DOWNTO 0);
     P2: IN STD_LOGIC_VECTOR(4 DOWNTO 0);
     CS: IN STD_LOGIC);
END BUS_51;
ARCHITECTURE ART OF BUS_51 IS

  SIGNAL RAMTMP0: STD_LOGIC_VECTOR(7 DOWNTO 0);
  SIGNAL RAMTMP1: STD_LOGIC_VECTOR(7 DOWNTO 0);
  SIGNAL RAMTMP2: STD_LOGIC_VECTOR(7 DOWNTO 0);
  SIGNAL RAMTMP3: STD_LOGIC_VECTOR(7 DOWNTO 0);
  SIGNAL RAMTMP4: STD_LOGIC_VECTOR(7 DOWNTO 0);
  SIGNAL TMP: STD_LOGIC;
  SIGNAL LATCH_ADDRES: STD_LOGIC_VECTOR(7 DOWNTO 0);
  BEGIN

  PROCESS(ALE)                    
  BEGIN
  IF ALE'EVENT AND ALE='0' THEN
      LATCH_ADDRES<=P0I;
  END IF;
  END PROCESS;

  PROCESS(CLK,RD,CS)
    VARIABLE P0_OUT: STD_LOGIC_VECTOR(7 DOWNTO 0);
  BEGIN
  IF (CLK'EVENT AND CLK='1') THEN
  IF( RD='0')AND (CS='0') THEN
      IF LATCH_ADDRES="11111100" THEN
          GX<='1';
          P0_OUT:=RAMTMP0;
      ELSIF LATCH_ADDRES="11111101" THEN
          GX<='1';
          P0_OUT:=RAMTMP1;
      ELSE GX<='0';
      END IF;
  ELSE GX<='0';
  END IF;
  END IF;
  P0T<=P0_OUT;
  END PROCESS;
  
  PROCESS(CLK,WR,CS)
  BEGIN
  IF (CLK'EVENT AND CLK='0') THEN
    IF ( WR='0')AND (CS='0') THEN
      IF LATCH_ADDRES="11111100" THEN
          RAMTMP0<=P0I;
          TMP<='0';
      ELSIF LATCH_ADDRES="11111101" THEN
          RAMTMP1<=P0I;
          TMP<='0';
      ELSIF LATCH_ADDRES="11111110" THEN
          RAMTMP2<=P0I;
          TMP<='0';
      ELSIF LATCH_ADDRES="11111111" THEN
          RAMTMP3<=P0I;
          TMP<='0';
      ELSIF LATCH_ADDRES="11111011" THEN
          RAMTMP0<="00000000";
          RAMTMP1<="00000000";
          RAMTMP2<="00000000";
          RAMTMP3<="00000000";
          TMP<='1';
      ELSE RAMTMP4<=P0I;
      END IF;
    END IF;
  END IF;
  END PROCESS;
  FDATA(15 DOWNTO 8)<=RAMTMP0;
  FDATA(7 DOWNTO 0) <=RAMTMP1;
  PDATA(15 DOWNTO 8)<=RAMTMP2;
  PDATA(7 DOWNTO 0)<=RAMTMP3;
  CLR<=TMP;
  END ART;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -