【文章內(nèi)容簡(jiǎn)介】
看出其作用是作為分頻,將 50MHz 的輸入信號(hào)先通過 PIN1MHZ 模塊將 50MHZ 分為 1Mhz,再將 1MHZ的信號(hào)輸入到下一個(gè)分頻信號(hào)中分為頻率為: 1HZ, 488HZ, 1953HZ, 7812HZ, 31250HZ, 125kHZ, 500kHZ 的信號(hào)。 程序 1: PIN1hz LIBRARY IEEE。 USE 。 USE 。 ENTITY PIN1MHZ IS PORT(CLKIN:IN STD_LOGIC。 CLKOUT:OUT STD_LOGIC)。 END PIN1MHZ。 ARCHITECTURE A OF PIN1MHZ IS BEGIN PROCESS(CLKIN) VARIABLE CNTTEMP:INTEGER RANGE 0 TO 49。 BEGIN IF CLKIN=39。139。 AND CLKIN 39。EVENT THEN IF CNTTEMP=49 THEN CNTTEMP:=0。 ELSE IF CNTTEMP25 THEN CLKOUT=39。139。 ELSE CLKOUT=39。039。 END IF。 CNTTEMP:=CNTTEMP+1。 END IF 。 END IF。 END PROCESS。 END A。 分析:上述程序段中可以知道,使用變量 VARIABLE 做為計(jì)數(shù),從 049剛好為 50個(gè)數(shù), 當(dāng)小于 25 的時(shí)候賦值為 1,其余為 0,使得將 50MHZ 處理為 1MHZ。當(dāng)取值大于或 等于 50時(shí)復(fù)位為 0。從而達(dá)到分頻的目的。 程序 2: library ieee。 use 。 use 。 entity t is port(clk:in std_logic。 freq1:out std_logic。 freq488:out std_logic。 freq1953:out std_logic。 freq7812:out std_logic。 freq31250:out std_logic。 freq125k:out std_logic。 freq500k:out std_logic)。 end t。 architecture behv of t is signal temp:std_logic_vector(19 downto 0)。 begin process(clk) begin if clk 39。event and clk=39。139。 then if temp=11110100001000111111 then temp=00000000000000000000。 else temp=temp+1。 end if。 end if。 end process。 freq1=temp(19)。 freq488=temp(10)。 freq1953=temp(8)。 freq7812=temp(6)。 freq31250=temp(4)。 freq125k=temp(2)。 freq500k=temp(0)。 end behv。 分析:程序 2的設(shè)計(jì)思路同樣是使用計(jì)數(shù),但和程序 1 的計(jì)數(shù)不完全相同,數(shù)由 16 進(jìn) 制表示, 4 為 2 進(jìn)制組成 1位 16進(jìn)制,所以從第 0位開始可以計(jì)數(shù) 2位,第一位 可以計(jì)數(shù) 4位,第二位可以計(jì)數(shù) 8 位,依次可以得出計(jì)數(shù)量為 2的 n+1次方個(gè)數(shù), 從而達(dá)到同時(shí)計(jì)數(shù)多個(gè)的目的從而產(chǎn)生多個(gè)時(shí)鐘信號(hào)。 (14)模塊四分析: 分析:顯示模塊由兩部分組成, 74138 的表面作用是譯碼將輸入的 sel信號(hào)翻譯出來并選中制定的數(shù) 碼管。其實(shí)質(zhì)作用是由輸入的信號(hào)( 07 計(jì) 數(shù)為 8 的計(jì)數(shù)信號(hào)輸入),來控制數(shù)碼管的片選。 而 display 的作用是來實(shí)現(xiàn)片選,將 RS232 輸出的并行信號(hào)的兩部分(每部分 4 位組成一個(gè) 16 進(jìn)制數(shù))進(jìn)行處理來實(shí)現(xiàn)段選。 分析:上圖為 display 模塊的細(xì)節(jié)圖。 rxd 中的信號(hào)分為兩組輸入,分別進(jìn)入 muxer 的第 0 組和第 1 組。其余的組全部拉低,達(dá)到出去最低兩位顯示,其余為顯示全 0 的目的, t8 為 07 的計(jì) 數(shù),作用是控制 muxer 進(jìn)入 led 程序的順序,而 led 是為了實(shí)現(xiàn)段選,點(diǎn)亮數(shù)碼管的特定位來 顯示輸入數(shù)值。 程序 1. library ieee。 use 。 use 。 entity t8 is port(clk:in std_logic。 q:out std_logic_vector(2 downto 0))。 end t8。 architecture behv of t8 is signal temp:std_logic_vector(2 downto 0)。 begin process(clk) begin if clk 39。event and clk=39。139。 then if temp=111 then temp=000。 else temp=temp+1。 end if。 end if。 end process。 q=temp。 end behv。 分析: t8 的作用為 07 的 8 位計(jì)數(shù),為后面模塊提供計(jì)數(shù)順序。 程序 2. library ieee。 use 。 use 。 entity led is port(din:in std_logic_vector(3 downto 0)。 dout:out std_logic_vector(6 downto 0))。 end led。 architecture behv of led is begin process(din) begin case din is when 0000=dout=0111111。 when 0001=dout=0000110。 when 0010=dout=1011011。 when 0011=dout=1001111。 when 0100=dout=1100110。 when 0101=dout=1101101。 when 0110=dout=1111101。 when 0111=dout=0000111。 when 1000=dout=1111111。 when 1001=dout=1101111。 when 1010=dout=1110111。 when 1011=dout=1111100。 when 1100=dout=0111001。 when 1101=dout=1011110。 when 1110=dout=1111001。 when 1111=dout=1110001。 when others=dout=0000000。 end case。 end process。 end behv。 分析:程序 led是完成段顯,將輸入的數(shù)值 015 翻譯成對(duì)應(yīng)的數(shù)碼管編碼。 (15)接收模塊 分析:程序 rsSedn 作為接受模塊,用于將 232 中發(fā)送的數(shù)據(jù)再次回寫到到串口助手的接收端內(nèi)!要是程序完全正常的話發(fā)送什么就會(huì)在接收窗口接收到什么。 問題 : 如何真正的實(shí)現(xiàn)發(fā)送和接受同步,并且發(fā)送的和接收的完全一樣?發(fā)送和接收波特率怎么弄? 答:接收和顯示的已經(jīng)做出來了,但是發(fā)送的 : 參考文獻(xiàn) [1] 通信與電子系統(tǒng)實(shí)驗(yàn)指導(dǎo)書 .武漢:華中科技大學(xué)武昌分校 . [2] 潘松 .EDA 技術(shù)與 :清華大學(xué)出版社, 2021. [3] 朱運(yùn)利 .E