




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、北京郵電大學實驗報告基于VHDL的課程設計實驗報告 班級: 2008211126 學號: 08210707 專業: 信息工程 姓名: 王海鋒(11)設計一:異步串行通信控制器一、實驗目的1、熟悉異步通信信息傳輸格式;2、掌握狀態機的原理與設計方法;3、了解異步通信的原理和特點;4、掌握異步通信接口的設計方法;二、實驗內容與設計過程 本實驗通過計算機輔助設計,用VHDL語言設計實現異步串行通信控制器,設計總體思路是按照實驗內容要求,將整個程序設計分成三個主要模塊:異步發送電路模塊transmitter、接受電路模塊receiver和通信控制器模塊info_control。(1)異步發送電路模塊發
2、送模塊主要完成的任務是將并行輸入的8位數據串行的輸出出去。1、程序中主要用到了發送雙緩沖和計數器。發送雙緩沖:包括發送緩沖寄存器TB(Tx Buffer)和發送移位寄存器TS(Tx Shifter);TB用于暫時存儲輸入的8位數據,TS用于移位輸出(并串變換)。計數器代替狀態機用于狀態控制計數,用來指示數據發送完成。2、實驗中設置發送字長=8位,最高位是奇校驗位;發送停止位至少為1位;另外,為了發送的準確性,要求發送速率由發送時鐘TCLK輸入確定,是TCLK頻率的1/8。3、實驗中需要發送緩沖器的指示位TBE(Tx Buff. Empty)=1,表示發送緩沖器空,請求下一發送數據。若允許發送中
3、斷(ETBE=1),則可產生發送中斷請求;現行數據發送出去之后,若TBE=0(發送緩沖器滿),則把TB中的數據裝入TS,把TBE置位,并開始發送。若TBE=1,則繼續發送停止位,直到TBE=0。4、發送模塊設計框圖如下圖1所示:8級發送緩存器TB(最高位作為奇校驗位)8級移位寄存器TS(并串變換)計數器DATA_INRESET,TCLK,WRENCOUNTTXD(2)接收電路模塊接收模塊的主要任務是完成對發送模塊發送的數據進行異步接收,并把數據串并變換后進行緩存,以便接收設備把它取走。這里異步就是說接收模塊使用的時鐘和發送模塊是不同的,即收發雙方各用自己的時鐘來控制發送和接收。1、程序中主要用
4、到了發送雙緩沖和接收控制器。接收雙緩沖,包括接收移位寄存器RS(Rx Shifter)和接收緩沖器RB(Rx Buffer);它們與發送模塊是對稱的,因此設置RS為9級,RB為8級;RS是將接收的串行數據逐個寫到RS中,并將RS不斷移位,即實現串并變換;RB用于緩存接收數據。接收控制器實際上就是狀態機,主要用于控制移位寄存器的移位和置初始值,控制接收緩存器的數據載入。2、接收控制器按照預定的原理工作,自動實現位同步和幀對準。其原理為:在起始位前沿(下降沿),啟動接收時鐘從0計數,當計到4時(差不多在信息位的中間),輸出采樣時鐘SCLK。此后,每8個RXC,輸出一個SCLK,以對接收數據RXD進
5、行串-并變換,直到收到停止位; 若在應該是停止位的地方收到邏輯0,則表示出現幀錯誤FE(Frame Error)。應等待下一個高電平1,把它作為停止位繼續接收。這樣就可以實現幀對準。3、程序中需要標志符RBF,指示接收緩沖器(RB)的狀態:RBF=1,表示RB內的數據有效,0表示無效。另外,應有狀態寄存器,指示FE,PE,OE,RBF等。若發生FE,則FE置1,指示起止格式錯;PE是奇偶校驗位,在接收字符時,接收邏輯對接收字符進行奇校驗,若不合規律,則使PE置1,否則,置0;當讀接收數據(re=0),可使RBF清零。4、接收模塊設計框圖如下圖2所示: 其中,RXC是接收時鐘;RXD是接收8位串
6、行數據;LDSR是接收移位寄存器置初始值的信號;SCLK是采樣(移位)時鐘,(它應處在RXD每位數據的中間位置);LDRB是接收緩存的裝入命令,它把移位寄存器的接收數據裝入到緩存;RE是接收設備的取數據命令,它是低電平有效; 5、接收控制器(狀態機)的流程圖如下圖3所示:Reset 各表示位定義如下: RXD,SO/LDSR,LDRB,SCLK,FES0RXD=0 1,d/0,0,0,0 NS1 Y 0,d/1,0,0,0 d,d/0,0,0,0S2 d,d/0,0,0,0S3 RXD=0 N 1,d/0,0,0,0 Y 0,d/0,0,1,0S4S5 d,d/0,0,0,0S6 d,d/0,
7、0,0,0 d,d/0,0,0,0S7S8 d,d/0,0,0,0 d,d/0,0,0,0S9 d,d/0,0,0,0S100 d,d/0,0,0,0S11SO=0 N d,1/0,0,1,0S12 Y d,0/0,0,0,0RXD=0 Y 0,d/0,0,0,1 N 1,d/0,1,0,0(3)通信控制器模塊控制器模塊實際上是將發送和接收模塊電路組合起來,并加入控制信號,構成的一個異步通信控制器。這個模塊中會包含一些狀態變量,發送模塊和接收模塊都是在狀態變量處在不同的組合情況下的時候進行不同的工作。1、控制器模塊設計框圖如下圖4所示:控制端RESETCLK1CLK2/CSA0/RD/WR接收
8、端發送端DATA_INDATA_OUT 2、控制器通過 /CS,A0,/RD,/WR控制發送、接收和輸出工作。具體操作功能和一些寄存器格式如下:通信控制器操作功能表:/CS A0 /RD /WR功能 1 X X XD7.0輸出高阻 0 0 0 1Dout讀出接收數據(RB) 0 0 1 0Din寫數據到TB 0 1 0 1Dout讀狀態寄存器 0 1 1 0Din寫命令寄存器讀寫數據寄存器格式:XB6B5B4B3B2B1B0 命令寄存器格式(只寫寄存器):00000ERXEETBEERBF其中,ERBF=1,允許接收中斷,0,不允許;ETBE=1,允許發送中斷, 0,不允許;ERXE=1,若O
9、E,PE,FE任一個是1,就產生接收錯誤中斷。狀態寄存器格式(只讀寄存器)000FEOEPETBERBF 其中,上電后,FE,OE,PE,RBF為0,TBE=1;寫數據寄存器使TBE=0,裝載TS(Load Tx Shifter)使TBE=1;讀數據寄存器使RBF=0,裝載RB使RBF=1;讀狀態寄存器命令后,使FE,OE,PE清零,置位條件已如上述。三、輸入原文件(帶注釋VHDL源程序)(1)異步發送模塊VHDL源代碼:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY transmi
10、tter IS -定義發送模塊實體,實體名transmitterPORT( RESET: IN STD_LOGIC; -復位信號 TCLK: IN STD_LOGIC; -發送時鐘 WR: IN STD_LOGIC; -寫數據信號,高位有效 DATA_IN: IN STD_LOGIC_VECTOR(6 DOWNTO 0); -數據輸入,7位 TXD: OUT STD_LOGIC; -輸出數據序列 TBE: OUT STD_LOGIC);-發送緩沖器指示位信號END transmitter;ARCHITECTURE A OF transmitter ISSIGNAL TB: STD_LOGIC_
11、VECTOR(7 DOWNTO 0);-發送緩沖寄存器,8位SIGNAL TS: STD_LOGIC_VECTOR(8 DOWNTO 0);-發送移位寄存器,9位SIGNAL EN: STD_LOGIC; -移位使能信號SIGNAL COUNT: INTEGER RANGE 0 TO 9; -計數器控制信號SIGNAL TBE1: STD_LOGIC; SIGNAL TE: STD_LOGIC; -發送移位寄存器TS置初始值信號,低位有效BEGINP1:PROCESS(RESET,TCLK) -數據裝入TB進程BEGIN IF RESET=1 THEN -初始化 TBE1=1; -發送緩沖器空
12、 ELSIF (TCLKEVENT AND TCLK=1) THEN IF (TBE1=1 AND WR=0)THEN TB(6 DOWNTO 0)=DATA_IN; -裝載數據 IF (TB(0) XOR TB(1) XOR TB(2) XOR TB(3) XOR TB(4) XOR TB(5) XOR TB(6)=0) THEN -奇偶校驗 TB(7)=1; -最高位(奇校驗位) ELSE TB(7)=0; END IF; EN=1; TBE1=0; -發送緩沖器滿 ELSIF EN=1 then EN=0; TBE1=1; ELSIF COUNT=9 THEN TBE1=1; END I
13、F; END IF; TBE=TBE1;END PROCESS P1;P2:PROCESS(RESET,TCLK) -移位進程BEGIN IF RESET=1 THEN -初始化 TXD=1;TS=000000000; TE=0; ELSIF (TCLKEVENT AND TCLK=1) THEN IF (TE=0) THEN TXD=1;TS=111111111; TE=1; ELSIF EN=1 THEN TS(8 DOWNTO 1)=TB; -將TB寫入TS TS(0)=0; -最低位,置為0,作為發送數據起始位 COUNT=0; -計數器為0 ELSE IF COUNT=9 THEN
14、COUNT=0; ELSE COUNT=COUNT+1; END IF; TXD=TS(0); -將0位輸出 TS(7 DOWNTO 0)=TS(8 DOWNTO 1);-移位 TS(8)=1; -最后位,置1作為發送數據停止位 END IF; END IF;END PROCESS P2;END A;(2)接收模塊VHDL源代碼: 1、實驗先設計接收控制器,編譯通過,并把他變成邏輯符號備用。其VHDL代碼如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY control IS -定
15、義接收控制器(狀態機)模塊實體,實體名controlPORT ( RESET:IN STD_LOGIC; RXD:IN STD_LOGIC; SO: IN STD_LOGIC; RXC:IN STD_LOGIC; SCLK:OUT STD_LOGIC; LDSR:OUT STD_LOGIC; FE:OUT STD_LOGIC; LDRB:OUT STD_LOGIC);END control;ARCHITECTURE A OF control ISTYPE state_type IS (S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12);SIGNAL STATE
16、:state_type;BEGIN PROCESS( RESET,RXC) BEGIN IF RESET=1 THEN STATE IF RXD=1 THEN STATE=S0;LDSR=0;LDRB=0;SCLK=0;FE=0; ELSE STATE=S1;LDSR=1;LDRB=0;SCLK=0;FE STATE=S2;LDSR=0;LDRB=0;SCLK=0;FE STATE=S3;LDSR=0;LDRB=0;SCLK=0;FE IF RXD=0 THEN STATE=S4;LDSR=0;LDRB=0;SCLK=1;FE=0; ELSE STATE=S0;LDSR=0;LDRB=0;SC
17、LK=0;FE STATE=S5;LDSR=0;LDRB=0;SCLK=0;FE STATE=S6;LDSR=0;LDRB=0;SCLK=0;FE STATE=S7;LDSR=0;LDRB=0;SCLK=0;FE STATE=S8;LDSR=0;LDRB=0;SCLK=0;FE STATE=S9;LDSR=0;LDRB=0;SCLK=0;FE STATE=S10;LDSR=0;LDRB=0;SCLK=0;FE STATE=S11;LDSR=0;LDRB=0;SCLK=0;FE IF SO=0 THEN STATE=S12;LDSR=0;LDRB=0;SCLK=0;FE=0; ELSE STAT
18、E=S4;LDSR=0;LDRB=0;SCLK=1;FE IF RXD=0 THEN STATE=S12;LDSR=0;LDRB=0;SCLK=0;FE=1; ELSE STATE=S0;LDSR=0;LDRB=1;SCLK=0;FE=0; END IF; END CASE; END IF; END PROCESS;END A; 2、然后設計數據通路并與接收控制器合在一起,構成異步接收器模塊。其VHDL代碼如下: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity receiver is
19、 -定義接收模塊實體,實體名receiverport(reset: in std_logic; -置位信號 rxc: in std_logic; -接收時鐘 rxd: in std_logic; -接收數據序列 re: in std_logic; -讀接收數據信號 restate: in std_logic; -讀狀態寄存器信號,置1后使oe,pe,fe清零 fe: out std_logic; -幀錯誤信號 pe: out std_logic; -奇偶校驗信號 oe: out std_logic; -接收字符丟失信號 rbf: out std_logic; -接收緩沖器指示位信號 dout:
20、out std_logic_vector(7 downto 0);-輸出8位并行數據end receiver;architecture b of receiver iscomponent control -接收控制器(狀態機)模塊 PORT ( RESET:IN STD_LOGIC; RXD:IN STD_LOGIC; SO: IN STD_LOGIC; RXC:IN STD_LOGIC; SCLK:OUT STD_LOGIC; LDSR:OUT STD_LOGIC; FE:OUT STD_LOGIC; LDRB:OUT STD_LOGIC);end component;signal sclk
21、: std_logic; -采樣時鐘信號signal ldsr: std_logic; -rs置初始值信號signal ldrb: std_logic; -接收緩存器載入信號,把rs的接收數據載入到rbsignal rs:std_logic_vector(8 downto 0); -接收移位寄存器9位signal rb:std_logic_vector(7 downto 0); -接收緩存器8位signal rbf1,fe_s:std_logic;beginu1: control port map(reset,rxd,rs(0),rxc,sclk,ldsr,fe_s,ldrb);p1:proc
22、ess(reset,sclk) -移位寄存器接收數據進程beginif(reset=1)then rs=000000000;elsif(ldsr=1)then rs=111111111;elsif(sclkevent and sclk=0)then rs(0)=rs(1); rs(1)=rs(2); rs(2)=rs(3); rs(3)=rs(4); rs(4)=rs(5); rs(5)=rs(6); rs(6)=rs(7); rs(7)=rs(8); rs(8)=rxd;end if;end process p1;p2:process(rxc) -接收緩存器(rb)進程beginif(rxc
23、event and rxc=1)then if(ldrb=1)then rb=rs(8 downto 1); rbf1=1; -表示rb內數據有效 elsif(re=0)then -收到讀接收數據信號(re)后,讀出rb的數據 dout=rb; rbf1=0; -讀接收數據后,rbf清零 end if;end if;rbf=rbf1;end process p2;p3:process(reset,rxc) -奇偶校驗進程beginif(reset=1)then pe=0;elsif(rxcevent and rxc=1)then if(ldrb=1)then if(rs(1)xor rs(2)
24、 xor rs(3) xor rs(4) xor rs(5) xor rs(6) xor rs(7) xor rs(8)=0) then-若奇偶校驗錯,pe置1; pe=1 ; else pe=0; end if; elsif(restate=1)then pe=0; end if;end if;end process p3;p4:process(reset,rxc) -判斷接收字符是否丟失進程begin if(reset=1)then oe=0;elsif(rxcevent and rxc=0)then if(ldrb=1and rbf1=1)then oe=1; -表示接收字符丟失 els
25、if(restate=1)then oe=0; end if;end if;end process p4;p5:process(reset,rxc) -起止格式判斷進程beginif(reset=1)then fe=0;elsif(rxcevent and rxc=1)then if(fe_s=1)then fe=1; -指示起止格式錯 elsif(fe_s=0)then fe=0; elsif(restate=1)then fe=0; end if;end if;end process p5;end b;(3)通信控制器模塊VHDL源代碼:LIBRARY IEEE;USE IEEE.STD_
26、LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY info_control IS -定義通信控制器模塊實體,實體名info_controlPORT( CS,A0,RD,WR: IN STD_LOGIC; -控制信號CS,A0,RD,WR RESET: IN STD_LOGIC; -復位信號, CLK1,CLK2:IN STD_LOGIC;-發送和接收時鐘 DATA_IN: IN STD_LOGIC_VECTOR(6 DOWNTO 0);-輸入數據,7位 DATA_OUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
27、;-輸出數據,8位(加上奇校驗位) INTERUPT: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);-中斷信號輸出END info_control;ARCHITECTURE C OF info_control ISCOMPONENT transmitter - 發送模塊聲明PORT( RESET: IN STD_LOGIC; TCLK: IN STD_LOGIC; WR: IN STD_LOGIC; DATA_IN: IN STD_LOGIC_VECTOR(6 DOWNTO 0); TXD: OUT STD_LOGIC; TBE: OUT STD_LOGIC); END
28、COMPONENT;COMPONENT receiver -接收模塊聲明PORT( reset: in std_logic; rxc: in std_logic; rxd: in std_logic; re: in std_logic; restate: in std_logic; fe: out std_logic; pe: out std_logic; oe: out std_logic; rbf: out std_logic; dout:out std_logic_vector(7 downto 0);END COMPONENT;SIGNAL COMMAND_RAM: STD_LOGIC
29、_VECTOR(7 DOWNTO 0); -命令寄存器0,0,0,0,0,ERXE,ETBE,ERBFSIGNAL STATE_RAM: STD_LOGIC_VECTOR(7 DOWNTO 0); -狀態寄存器信號0,0,0,FE,OE,PE,TBE,RBFSIGNAL DATA_OUT1: STD_LOGIC_VECTOR(7 DOWNTO 0); -讀數據寄存器信號SIGNAL DATA_IN1: STD_LOGIC_VECTOR(6 DOWNTO 0); -寫數據寄存器信號SIGNAL XD_S: STD_LOGIC; -傳輸數據序列寄存信號SIGNAL WR_S: STD_LOGIC;
30、 -控制發送寫入信號SIGNAL FE,OE,PE,TBE,RBF: STD_LOGIC; -狀態信號SIGNAL RE_S: STD_LOGIC; -狀態寄存器復位信號SIGNAL ERXE,ETBE,ERBF: STD_LOGIC; -中斷信號BEGINU1: transmitter PORT MAP(RESET,CLK1,WR_S,DATA_IN1,XD_S,TBE);-調用發送模塊U2: receiver PORT MAP(RESET,CLK2,XD_S,RD,RE_S,FE,PE,OE,RBF,DATA_OUT1);-調用接收模塊P1:PROCESS(RESET,CLK1)-組合命令
31、 控制發送和接收進程BEGIN IF RESET=1 THEN -初始化,DATA_OUT輸出為全1,寫入信號置1 DATA_OUT=11111111;WR_S=1; ELSIF CLK1EVENT AND CLK1=1 THEN -始終在上升沿,按照命令列表判斷執行命令 IF CS=1 THEN -命令1XXX,輸出高阻 DATA_OUT=11111111;WR_S=1; ELSIF CS=0 THEN IF A0=0 THEN IF (RD=0 AND WR=1) THEN -命令0001,讀出接收數據(RB) DATA_OUT=DATA_OUT1;WR_S=1; ELSIF (RD=1
32、AND WR=0) THEN -命令0010,寫數據到TB DATA_IN1=DATA_IN;WR_S=0; ELSE WR_S=1; END IF; ELSIF A0=1 THEN WR_S=1; IF (RD=0 AND WR=1) THEN -命令0101,讀狀態寄存器 STATE_RAM(7)=0; STATE_RAM(6)=0; STATE_RAM(5)=0; STATE_RAM(4)=FE; STATE_RAM(3)=OE; STATE_RAM(2)=PE; STATE_RAM(1)=TBE; STATE_RAM(0)=RBF; DATA_OUT=STATE_RAM; RE_S=1
33、; ELSIF (RD=1 AND WR=0) THEN -命令0110,寫命令寄存器 COMMAND_RAM(7)=0; COMMAND_RAM(6)=0; COMMAND_RAM(5)=0; COMMAND_RAM(4)=0; COMMAND_RAM(3)=0; COMMAND_RAM(2)=DATA_IN(2); COMMAND_RAM(1)=DATA_IN(1); COMMAND_RAM(0)=DATA_IN(0); ERXE=DATA_IN(2); ETBE=DATA_IN(1); ERBF=DATA_IN(0); END IF; END IF; END IF; END IF;END
34、 PROCESS P1;P2:PROCESS(CLK1)-中斷命令進程BEGIN IF RESET=1 THEN-初始化 INTERUPT=000; ELSE IF (ERBF=1 AND RBF=1) THEN-接收中斷 INTERUPT(0)=1; ELSE INTERUPT(0)=0; END IF; IF (ETBE=1 AND TBE=1) THEN-發送中斷 INTERUPT(1)=1; ELSE INTERUPT(1)=0; END IF; IF ERXE=1 THEN -接收錯誤中斷 IF (OE=1OR PE=1OR FE=1 ) THEN INTERUPT(2)=1; EL
35、SE INTERUPT(2)=0; END IF; ELSE INTERUPT(2)=0; END IF; END IF;END PROCESS P2;END C;異步通信控制器的仿真需要輸入的是:不同組合的控制信號 CS,A0,RD,WR;復位信號RESET; 發送時鐘 CLK1,接收時鐘 CLK2;7位輸入數據 DATA_IN。四、仿真結果及分析(1)異步發送模塊仿真波形圖 0 0 0 1 0 1 0 0 1 1分析:在第一個時鐘上沿,WR=0,有效,將輸入數據0010100寫入TB,并寫入奇校驗位,因為序列中1的個數為偶數,所以采用奇校驗時最高位加1,則TB=10010100,同時置EN
36、=1有效,TBE=0表示發送緩沖器滿;在第二個時鐘上沿,因為EN有效,將TB中數據寫入TS的高8位,TS最低位寫入起始位0, TS= 10010 1000,同時置EN=0無效;在第三個時鐘上沿,開始將數據發送出去,先發送低位,后發送高位,輸出數據序列如上圖RXD所示,依次為 0001010011,其中最后發送的是終止位1;移位寄存器TS向右依次移位,最高位補1作終止位;顯然發送端仿真結果正確。(2)異步接收模塊仿真波形圖 1、接收控制器(狀態機)模塊仿真圖分析:初始化后,狀態機STATE為S0狀態,在第一個時鐘上沿檢測發送數據序列RXD的值,RXD=0,表明準備接收字符,進入S1狀態同時給LD
37、SR賦值1; 狀態機實現了同步原理,在起始位前沿啟動接收時鐘RXC從0計數,即狀態機S0,當計到4時,輸出采樣時鐘SCLK,此后,每8個RXC輸出一個SCLK,直到停止位;如圖所示,顯然仿真結果與接收控制器流程圖是吻合的。2、異步接收模塊接收數據過程仿真圖 0 1 0 0 1 1 0 1(本圖右側的部分接在下面)分析:圖中rxd為接收數據序列,開始接收到的是起始位0,之后依次從低位到高位的接收數據是10011011;圖中LDSR為接收移位寄存器rs置初始值信號,由狀態機控制為1時,有效,將rs置為全1;SCLK是采樣時鐘,由狀態機控制,高位1有效時,在其下降沿,接收移位寄存器向右移位,最高位存
38、接收數據,圖中綠框所示; 1 分析:接收數據完全存入rs后,rs=110110010;由狀態機控制檢測終止位RXD,RXD=0,表示接收數據幀錯誤,輸出FE=1;繼續檢測RXD,直到某個時鐘沿終止位為1,有效,狀態機賦值LDRB為1有效,在下一個時鐘上沿將rs高8位數據賦值給接收緩存器rb中,同時置fe=0,如圖中藍色所示rb=11011001;然后在下一個時鐘上沿,re=0有效,讀出接收數據dout=11011001,顯然接收仿真結果是正確的。圖中沒有接收字符丟失,所以oe為0,顯然也是正確的。 3、奇校驗仿真圖分析:第一次接收到字符數據11011001,奇校驗有奇數個1,復合規律,pe為1
39、;第三次接收到字符數據10000111,奇校驗有偶數個1,不符合規律,pe為0;如上圖所示,仿真結果正確。(3)通信控制器總模塊仿真波形圖 分析:1、圖中紅色所示,控制信號為/CS,A0,/RD,/WR=0010,DATA_IN寫數據到TB,并加入奇校驗位;TB=; 2、圖中綠色所示,控制信號為0001,DATA_OUT讀出接收數據rb,DATA_OUT=10110011; 3、圖中藍色所示,控制信號為 0101,DATA_OUT讀狀態寄存器STATE_RAM,DATA_OUT=00000000; 4、圖中紫色所示,控制信號為1000,輸出高阻,DATA_OUT=; 5、圖中橙色所示,控制信號
40、為 0110,寫命令寄存器,ERXE=0,ETBE=1,ERBF=0; 6、圖中黑色所示,由于命令寄存器中ETBE=1,同時狀態寄存器中TBE=1,所以允許發送中斷,INTERUPT=010;顯然仿真正確。(4)接收模塊改變RXC的頻率后,分析仿真圖形,總結異步接收的優點1、原始RXC為1us,由上面的(2).2可知,讀出接收數據正確,dout=11011001。2、改變RXC為0.95us,接收數據正確,dout=11011001;如下:3、改變RXC為0.9us,接收發生錯誤,dout=,不再是11011001,如下: 4、改變RXC為1.05us,接收數據正確,dout=11011001
41、;如下: 4、改變RXC為1.1us,接收發生錯誤,dout=01101001,不再是11011001,如下:異步接收優點:接收端不需要與發送端時鐘同步;收發雙方用各自的時鐘來接收和發送,使發送端和接收端控制靈活,同時簡化了設備復雜度;發送端發送數據和接收端接收數據完全獨立,發送端可以間隔發送數據也可連續發送數據。即使發送端和接收端頻率稍有偏差也不會出現接收錯誤,所以可靠性較高。五、思考題1、如何實現從發送緩沖器到發送移存器的正確傳送?你是怎么實現的? 發送緩沖器是一個8位的并行寄存器,發送移存器是一個9位的寄存器,多出來的一位是用來存儲數據的起始位0的。實驗中,設置移位使能信號EN,在數據裝
42、入發送緩沖器TB后,EN就置1,當下一個時鐘到來時在上升沿檢測到EN為1,就將TB中8位數據裝入到發送移存器TS的高8位,TS最低位添起始位0。程序主要是通過賦值來實現正確傳送的。2、如何實現數據從接收移存器 到接收緩沖器的正確傳送的?你是怎么考慮的? 這個傳送過程實際上是發送端從發送緩沖器到發送移存器的反過程。實驗中,設置有接收緩存器載入信號LDRB,LDRB信號為1,表示可以將RS中的數據傳輸到RB中,LDRB是由接收控制器產生的。因此,程序當RS接收完畢接收數據序列時,當下一個時鐘到來時在上升沿檢測LDRB信號的值,LDRN=1,就將RS中的高8位數據傳送到RB中。同樣的利用賦值實現數據從接收移存器RS到接收緩沖器RB的正確傳輸。3、對PE,OE,FE怎樣管理才能達到實驗的要求?為什么要這樣要求?PE: 為奇偶校驗信號。本實驗采用的是奇校驗,當接收到8位數據后,對其進行異或運算,如果8位數據中有偶數個1時,異或結果為0,表述,發生奇校驗錯誤,將PE置1。這樣要求可以防止出現8位數據全1的情況。OE: 為接收字符丟失信號。當RB接收到第一次的8位數據時,如果沒有RE信號,將RB中的信號讀出到DOUT中,則RBF=1,那么當下一次產生LDRB時,RBF為1,則產生OE=1,表示接收字符丟失。FE: 為幀錯誤信號。每一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業目標績效管理制度
- 上汽集團商標管理制度
- 鄉鎮發熱患者管理制度
- 企業項目創新管理制度
- 中介公司福利管理制度
- 項目型公司加班管理制度
- 企業供電設備管理制度
- 企業加強食堂管理制度
- 企業環境登記管理制度
- 倉庫領料安全管理制度
- 國家開放大學《初級經濟學》形考任務1-3參考答案
- 水煙休息室服務行業投資機會與風險識別及應對策略報告
- 幼兒園戶外混齡建構游戲案例分析
- JGJ52-2006 普通混凝土用砂、石質量及檢驗方法標準
- FFU龍骨吊頂防墜研究及應用-2023.12.11王國棟修
- 多層鋼結構廠房施工方案
- 河南省洛陽市2023-2024學年高一下學期期末考試物理試卷
- 知道網課智慧《藝術與科學理論基礎》測試答案
- 清拆勞務合同范本
- DL-T5366-2014發電廠汽水管道應力計算技術規程
- 烘焙專業職業生涯規劃書
評論
0/150
提交評論