【文章內(nèi)容簡(jiǎn)介】
0x30,amp。P3SEL 。設(shè)置TX,RX (RS485通信時(shí)用) 0xCF,amp。P3DIR 0x10,amp。P3DIR amp。Send_Buf 。清零發(fā)送緩沖 ret(2)、發(fā)送數(shù)據(jù):比如將R10的數(shù)據(jù)通過(guò)串口發(fā)送出去,其程序如下。rs485_SendData: 0x8,amp。P3OUT 。使能發(fā)送 R10,amp。U0TXBUF 。寫入發(fā)送數(shù)據(jù)T3 0x1,amp。U0TCTL 。等待發(fā)送完成 jnc T3 0x8,amp。P3OUT 。禁止發(fā)送 ret(3)、接收數(shù)據(jù):本程序設(shè)置通過(guò)中斷方式接收數(shù)據(jù),及在串口有活動(dòng)時(shí),將啟用串行接收中斷。ORG 0fff2H 。 USART 接收中斷 DW data_Receive 。接收數(shù)據(jù)入口data_Receive: amp。U0RXBUF,R10 。將接收數(shù)據(jù)緩沖區(qū)數(shù)據(jù)保存到R10 RETI四、FPGA、CPLD的使用方法:FPGA/CPLD都屬于可編程ASIC器件,集成度高,通過(guò)VHDL硬件編程語(yǔ)言將程序?qū)懭?,?gòu)成用戶所需要的各種較大規(guī)模的邏輯電路。使用時(shí)可根據(jù)系統(tǒng)需求選擇合適的FPGA/CPLD,目前世界上有十幾家生產(chǎn)CPLD/FPGA的廠商,最大的三家是ALTERA、XILINX、LATTICE?,F(xiàn)通過(guò)幾個(gè)數(shù)字電路說(shuō)明FPGA和CPLD的使用方法。 端口定義FPGA/CPLD具有大量的可用I/O,用戶根據(jù)硬件需求,在電路板上將可用I/O設(shè)計(jì)到相應(yīng)的輸入輸出引腳上,然后針對(duì)使用的I/O進(jìn)行定義,通過(guò)用戶定義的管腳利用VHDL硬件編程語(yǔ)言實(shí)現(xiàn)相應(yīng)的輸入/輸入及內(nèi)部各種邏輯功能,定義管腳分2個(gè)文件,在VHD文件里定義管腳名字及輸入/輸出方向。如下程序定義了18個(gè)信號(hào),-,-,x、y為2個(gè)輸出信號(hào),z為一個(gè)輸出信號(hào)。entity zdtxfpga is 。端口定義模塊開始Port ( p2 : inout std_logic_vector(0 to 7)。 。P2口為輸入輸出信號(hào) p1 : in std_logic_vector(0 to 7)。 。P1口為輸入信號(hào) z: out std_logic。 。z為輸出信號(hào)x: in std_logic。 。x為輸入信號(hào) y : in std_logic)。 。y為輸入信號(hào)end zdtxfpga。 。端口定義模塊結(jié)束信號(hào)名字和I/O特性定義完成后,還得定義信號(hào)在FPGA上對(duì)應(yīng)的管腳,管腳定義在UCF文件里。NET p20 LOC = p12。 。 NET x LOC = p100。 。 定義100腳為x利用FPGA/CPLD實(shí)現(xiàn)數(shù)字濾波: 眾所周知,在我們廣播控制系統(tǒng)上最大的問(wèn)題是干擾,處理干擾的手法也很多,可靠接地、采用電容電感對(duì)輸入輸出信號(hào)進(jìn)行濾波等,但以上的處理措施都不能徹底解決干擾問(wèn)題,在此利用FPGA內(nèi)邏輯功能實(shí)現(xiàn)精確的濾波處理。如下圖所示,CLK為系統(tǒng)時(shí)鐘,X為輸入信號(hào),底電平為正常,當(dāng)X信號(hào)出現(xiàn)高電平后,Y根據(jù)系統(tǒng)時(shí)鐘進(jìn)行計(jì)數(shù),當(dāng)Y的記數(shù)脈沖超過(guò)6個(gè)脈沖后X故障,Z信號(hào)為1,反之則為0,若小于6個(gè)脈沖則Y自動(dòng)清零;T0時(shí)刻,X信號(hào)正常,Z為底電平;T1時(shí)刻,X出現(xiàn)高電平,Y開始計(jì)數(shù),但Y計(jì)數(shù)到4時(shí)X出現(xiàn)底電平,Y自動(dòng)清零,屬于干擾信號(hào);T3時(shí)刻,X在次出現(xiàn)故障,Y開始記數(shù),當(dāng)Y計(jì)數(shù)到6時(shí),說(shuō)明X出現(xiàn)故障,Z電平翻轉(zhuǎn)為1,屬故障信號(hào);當(dāng)T4時(shí)刻,X在次為底電平,Y計(jì)數(shù)清零,Z電平翻轉(zhuǎn)為0。以上電路采用VHDL描述如下:Y信號(hào)計(jì)數(shù)/清零控制:If clk’event and clk=’1’ then If x=’0’ then Y=”000”。Else Y= Y+1。End if。End if。Z信號(hào)電平翻轉(zhuǎn):IF X=’0’ thenZ=’0’。Else if y=”110” the