【文章內(nèi)容簡介】
STD_LOGIC。 CLKOUT:OUT STD_LOGIC)。END PIN1MHZ。ARCHITECTURE A OF PIN1MHZ ISBEGINPROCESS(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做為計數(shù),從049剛好為50個數(shù), 當小于25的時候賦值為1,其余為0,使得將50MHZ處理為1MHZ。當取值大于或 等于50時復位為0。從而達到分頻的目的。程序2:library ieee。use 。use 。entity t isport(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ù),但和程序1的計數(shù)不完全相同,數(shù)由16進 制表示,4為2進制組成1位16進制,所以從第0位開始可以計數(shù)2位,第一位 可以計數(shù)4位,第二位可以計數(shù)8位,依次可以得出計數(shù)量為2的n+1次方個數(shù), 從而達到同時計數(shù)多個的目的從而產(chǎn)生多個時鐘信號。(14)模塊四分析:分析:顯示模塊由兩部分組成,74138的表面作用是譯碼將輸入的sel信號翻譯出來并選中制定的數(shù) 碼管。其實質(zhì)作用是由輸入的信號(07計數(shù)為8的計數(shù)信號輸入),來控制數(shù)碼管的片選。 而display的作用是來實現(xiàn)片選,將RS232輸出的并行信號的兩部分(每部分4位組成一個 16進制數(shù))進行處理來實現(xiàn)段選。分析:上圖為display模塊的細節(jié)圖。rxd中的信號分為兩組輸入,分別進入muxer 的第0組和第1 組。其余的組全部拉低,達到出去最低兩位顯示,其余為顯示全0的目的,t8為07的計 數(shù),作用是控制muxer進入led程序的順序,而led是為了實現(xiàn)段選,點亮數(shù)碼管的特定位來 顯示輸入數(shù)值。程序1.library ieee。use 。use 。entity t8 isport(clk:in std_logic。 q:out std_logic_vector(2 downto 0))。end t8。architecture behv of t8 issignal 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位計數(shù),為后面模塊提供計數(shù)順序。程序2.library ieee。use 。use 。entity led isport(din:in std_logic_vector(3 downto 0)。 dout:out std_logic_vector(6 downto 0))。end led。architecture behv of led isbegin 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翻譯成對應的數(shù)碼管編碼。(15)接收模塊分析:程序rsSedn作為接受模塊,用于將232中發(fā)送的數(shù)據(jù)再次回寫到到串口助手的接收端內(nèi)!要是程序完全正常的話發(fā)送什么就會在接收窗口接收到什么。:如何真正的實現(xiàn)發(fā)送和接受同步,并且發(fā)送的和接收的完全一樣?發(fā)送和接收波特率怎么弄?答:接收和顯示的已經(jīng)做出來了,但是發(fā)送的:參考文獻[1] :華中科技大學武昌分校.[2] :清華大學出版社,2009.[3] (第二版).北京:電子工業(yè)出版社,2007.[4] :西安電子科技大學出版社,2009.[5] (EDA).北京:中國電力出版社,2009. 附錄 程序清單:程序1:library ieee。use 。use 。entity rs232 isport(sysclk: in