新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于PC104總線的429接口板設(shè)計(jì)

        基于PC104總線的429接口板設(shè)計(jì)

        作者: 時(shí)間:2012-01-17 來(lái)源:網(wǎng)絡(luò) 收藏

        3 CPLD內(nèi)部功能及實(shí)現(xiàn)

        本文引用地址:http://www.104case.com/article/172233.htm


        3.1 開(kāi)發(fā)流程描述
          

        本系統(tǒng)中的CPLD使用Altera公司的MAX7000S系列可編程邏輯器件中的EPM7128SQC100-6型號(hào),從最初的電路思想到MAX+PLUSII的波形仿真,再到CPLD芯片編程結(jié)束要經(jīng)過(guò)的一般開(kāi)發(fā)流程如圖4所示。


        3.2 CPLD中的模塊
          

        中CPLD 的功能是實(shí)現(xiàn)ARINC429收發(fā)電路與板的的數(shù)據(jù)通信。其功能模塊可以分為6部分,以下逐一介紹各模塊的功能及其實(shí)現(xiàn)的方法。
          

        (1)產(chǎn)生AR1NC429控制器HS3282所需的TTCLK時(shí)鐘信號(hào)模塊
          

        TTCLK即發(fā)射器時(shí)鐘信號(hào),本設(shè)計(jì)中該信號(hào)有480 KHZ和1 MHZ兩種可選頻率,是由一個(gè)48 MHZ的晶振提供信號(hào)給CPLD,然后由CPLD編程產(chǎn)生480KHZ和1MHZ兩種信號(hào)以備選擇。該模塊用圖形編輯的方式實(shí)現(xiàn)。要產(chǎn)生3282所需要的480KHZ信號(hào)需要對(duì)輸入48MHZ信號(hào)進(jìn)行兩次10分頻,要產(chǎn)生1 MHZ信號(hào)需要對(duì)輸入信號(hào)進(jìn)行6分頻再8分頻。6分頻電路采用3個(gè)JK觸發(fā)器實(shí)現(xiàn),8分頻電路采用74393實(shí)現(xiàn),10分頻電路采用7490實(shí)現(xiàn)。
          

        (2)產(chǎn)生復(fù)位信號(hào)/MR和控制發(fā)射器使能信號(hào)ENTX的信號(hào)ENT模塊
        /MR是對(duì)3282的主復(fù)位信號(hào),/MR將直接送到HS3282,而ENT將送到另一模塊中,用于控制發(fā)射器使能信號(hào)ENTX的產(chǎn)生,ENTX=ENT*/TXR,其中TXR為發(fā)送緩沖區(qū)空標(biāo)志。該模塊也采用電路設(shè)計(jì)輸入方式。其電路主要由4個(gè)D型觸發(fā)器74LS74芯片來(lái)完成。輸入為驅(qū)動(dòng)器的前4個(gè)輸出,即D0~D3,時(shí)鐘脈沖為產(chǎn)生HS3282讀寫信號(hào)模塊的一個(gè)輸出信號(hào)/WR3,輸出為兩個(gè)HS3282的復(fù)位信號(hào)/MR1和/MR2以及ENT1和ENT2。本模塊具體實(shí)現(xiàn)電路如圖5所示。

         


        (3)產(chǎn)生片選信號(hào)/MCS的模塊
          

        本模塊產(chǎn)生的/MCS信號(hào)用于驅(qū)動(dòng)雙向總線驅(qū)動(dòng)器,進(jìn)行數(shù)據(jù)傳輸,并用于選片對(duì)HS3282進(jìn)行讀寫。此模塊用一片8位判決電路74LS688來(lái)實(shí)現(xiàn)其功能。其中P5-P1接一組基址選擇開(kāi)關(guān),Q5~Q1分別接總線的地址總線的XA7、XA9、XA8、XA6和XA5,G接總線的地址使能信號(hào)端XAEN。只有當(dāng)XAEN輸入為低時(shí),并且P5~Pl與Q5-Q1的對(duì)應(yīng)端相等時(shí),輸出為低,才有效。
        (4)雙向總線驅(qū)動(dòng)器模塊
          

        該模塊實(shí)現(xiàn)AR1NC429收發(fā)電路與板的接口總線PC104總線的16位數(shù)據(jù)傳輸。該模塊設(shè)計(jì)過(guò)程為,先用VHDL設(shè)計(jì)輸入方式設(shè)計(jì)兩個(gè)單向三態(tài)數(shù)據(jù)收發(fā)器,然后用電路設(shè)計(jì)輸入方式,將兩個(gè)單向數(shù)據(jù)收發(fā)器合成為一個(gè)雙向數(shù)據(jù)收發(fā)器。雙向總線驅(qū)動(dòng)器模塊的功能表如表1所示。

           表1 雙向總線驅(qū)動(dòng)器模塊的功能表 使能信號(hào)E 方向DIR 操作


          雙向總線驅(qū)動(dòng)器模塊產(chǎn)生其一個(gè)單向三態(tài)數(shù)據(jù)收發(fā)器(TRI_GATE1)的VHDL語(yǔ)言設(shè)計(jì)如下
        library ieee;
        use ieee.std_logic_1164.all;
        entity tri_gate1 is
        port(a0,al,a2,a3:in std_ logic;
        a:in std_logic_vector(15 downto 4);
        en:in std_logic;
        b0,b1,b2,b3:out std_logic;
        b:out std_logic_vector(15 downto 4):
        D0,D1,D2,D3:out std_logic);
        --向模塊2中送數(shù)據(jù)的4個(gè)輸出端
        end tri_gatel;
        architecture behav of tri_gate1 is
        begin
        process
        begin
        if en='1' then --EN為高電平時(shí)收發(fā)器有效
        b0=a0;b1=a1;b2=a2;b3=a3;b=a;
        D0=a0;D1=a1;D2=a2;D3=a3;
        else --EN為低時(shí)高阻狀態(tài)
        b0=一Z;b1=-Z;b2=-Z ;b3='Z';b=ZZZZZZZZZZZZ;
        end if
        end process;
        end behav;


        產(chǎn)生另一個(gè)單向三態(tài)數(shù)據(jù)收發(fā)器(TRI_GATE)的VHDL語(yǔ)言與此類似,只是少了D0~D3的輸出部分。兩個(gè)單向三態(tài)數(shù)據(jù)收發(fā)器構(gòu)成雙向總線驅(qū)動(dòng)器的電路設(shè)計(jì)如圖6所示(D0_out~D3_out作為圖5中的D0-D3輸入)

          (5)產(chǎn)生HS3282讀信號(hào)與寫信號(hào)和ENTX使能信號(hào)模塊
        本模塊要實(shí)現(xiàn)的功能是產(chǎn)生HS3282的讀寫信號(hào)和發(fā)送使能信號(hào)及一個(gè)送入PC104總線的輸入輸出16位芯片選擇信號(hào)/IO16。該模塊用VHDL語(yǔ)言輸入,其相應(yīng)的VHDL語(yǔ)言如下
        library ieee;
        use ieee.std logic_1164.all;
        entity gal4243 is
        port(MCS,XIOW,XIOR,A1,A2,A3,A4,ENT1,
        ENT2,TXR1,TXR2: in std_logic;
        WR0,W Rl,WR2,W R3,WR4,W R5,W R6:
        out std_logic;
        RD0,RD1,RD2,RD3,RD4:out std_logic;
        IO16,ENTX1,ENTX2:out std_logic);
        end gal4243;
        architecture behav of gal4243 is
        begin
        process



        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 华阴市| 荆州市| 舒兰市| 湖南省| 华阴市| 营山县| 鹤峰县| 根河市| 南木林县| 铁力市| 灌阳县| 阿克陶县| 海安县| 南安市| 正阳县| 清镇市| 深州市| 泗洪县| 郯城县| 枣庄市| 仁寿县| 江陵县| 安徽省| 连江县| 平乡县| 康乐县| 广州市| 临沭县| 沽源县| 乌拉特中旗| 南宫市| 益阳市| 扎鲁特旗| 绿春县| 北宁市| 象州县| 白沙| 南陵县| 洛宁县| 香格里拉县| 凉城县|