小舍YZ 发表于 2017-9-15 14:28:32

发送模块各个子模块

发送模块各个子模块

REBEGIN程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY REBEGIN IS
        PORT
        (
                A,B                : IN        STD_LOGIC;
                C                : OUT        STD_LOGIC
        );
END REBEGIN;

ARCHITECTURE A OF REBEGIN IS
        SIGNAL TEMP        : STD_LOGIC;
BEGIN
        PROCESS (A,B)
        BEGIN
                TEMP<=B;
                IF(TEMP='1')THEN
                        C<='0';
                ELSE
                        C<=A;
                END IF;
        END PROCESS;
END A;

REBEGIN_4程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY REBEGIN_4 IS
        PORT(
                A,B                        : IN        STD_LOGIC;
                EN                        : OUT        STD_LOGIC
        );       
END REBEGIN_4;

ARCHITECTURE A OF REBEGIN_4 IS
        SIGNAL        TEMP        : STD_LOGIC;       
BEGIN
        PROCESS (A,B)
        BEGIN
                TEMP<=A OR B;
                IF(TEMP='1')THEN
                        EN<='1';
                ELSE
                        EN<='0';
                END IF;
        END PROCESS;
END A;

EN程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY EN IS
        PORT
        (
                EN,A                : IN        STD_LOGIC;
                B                        : OUT        STD_LOGIC
        );
END EN;

ARCHITECTURE A OF EN IS
        SIGNAL        TEMP        : STD_LOGIC;
BEGIN
        PROCESS (EN)
        BEGIN
        TEMP<=EN;
        IF(TEMP='1')THEN
                B<=A;
        ELSE
                B<='0';
        END IF;
        END PROCESS;
END A;

FENPIN程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY FENPIN IS
        PORT
        (
                CLK,EN        : IN        STD_LOGIC;
                CLKOUT        : OUT        STD_LOGIC
        );
END FENPIN;

ARCHITECTURE A OF FENPIN IS
        SIGNAL        NUMBER                        : INTEGER RANGE 0 TO 998;
BEGIN
        PROCESS (EN,CLK)
        BEGIN
        IF(CLK 'EVENT AND CLK='1')THEN
        IF(EN='1')THEN
                CLKOUT<='1';
                NUMBER<=NUMBER+1;
                IF(NUMBER>=1)THEN
                        IF(NUMBER=998)THEN
                                NUMBER<=0;
                        END IF;
                        CLKOUT<='0';
                END IF;
        END IF;
        END IF;
        END PROCESS;
END A;

TRANSMIT程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY TRANSMIT IS
        PORT
        (
                EN,CLK        : IN        STD_LOGIC;
                CLKOUT        : OUT        STD_LOGIC
        );
END TRANSMIT;

ARCHITECTURE A OF TRANSMIT IS
        SIGNAL        NUMBER                        : INTEGER RANGE 0 TO 998;
BEGIN
        PROCESS (EN,CLK)
        BEGIN
        IF(CLK 'EVENT AND CLK='1')THEN
        IF(EN='0')THEN
                CLKOUT<='0';
        ELSE
                        CLKOUT<='1';
                        NUMBER<=NUMBER+1;
                        IF(NUMBER>=1)THEN
                                IF(NUMBER=998)THEN
                                        NUMBER<=0;
                                END IF;
                                CLKOUT<='0';
                        END IF;
                END IF;
        END IF;
        END PROCESS;
END A;

ENCODE程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY ENCODE IS
        PORT
        (
                EN,CLK,DATA_IN        : IN        STD_LOGIC;
                ZO                                : OUT        STD_LOGIC
        );
END ENCODE;

ARCHITECTURE A OF ENCODE IS
        SIGNAL        COUNT        : INTEGER RANGE 0 TO 3;
        SIGNALZ                : STD_LOGIC;
        SIGNAL         NUMBER        : INTEGER RANGE 0 TO 998;
BEGIN
        PROCESS (CLK)
        BEGIN
        IF(EN='0')THEN
                ZO<='0';
        ELSE
        IF(CLK 'EVENT AND CLK='1')THEN
                IF(DATA_IN='0')THEN
                        ZO<='0';
                ELSE
                        COUNT<=COUNT+1;
                        IF(COUNT=3)THEN
                                COUNT<=0;
                        END IF;
                        CASE COUNT IS
                                WHEN 0=>Z<='1';
                                WHEN 1=>Z<='0';
                                WHEN 2=>Z<='1';
                                WHEN 3=>Z<='0';
                        END CASE;
                        ZO<=Z;
                END IF;
        END IF;
        END IF;
        END PROCESS;
END A;

MUX2TO1程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY MUX2TO1 IS

        PORT
        (
                A,B,SEL                        : IN        STD_LOGIC;
                C                                : OUT   STD_LOGIC
        );
       
END MUX2TO1;

ARCHITECTURE A OF MUX2TO1 IS
        SIGNAL TEMP        : STD_LOGIC;
BEGIN
        PROCESS (A,B,SEL)
        BEGIN
                TEMP<=SEL;
                IF(TEMP='1')THEN
                        C<=A;
                ELSE
                        C<=B;
                END IF;
        END PROCESS;
END A;

fpga_feixiang 发表于 2017-9-15 14:56:38

还是VHDL的,
页: [1]
查看完整版本: 发送模块各个子模块