雙網(wǎng)傳真機(jī)的編譯碼電路設(shè)計(jì)與實(shí)現(xiàn)
4 譯碼電路單元設(shè)計(jì)
對(duì)于MHC碼而言,首先它是一個(gè)變長(zhǎng)碼,發(fā)送端在編碼時(shí)把游程長(zhǎng)度所對(duì)應(yīng)的碼元數(shù)據(jù)不留間隙的存入發(fā)送緩沖區(qū)中,經(jīng)過(guò)調(diào)制載波后發(fā)送出去。接收端解調(diào)出來(lái)的數(shù)據(jù),即編碼數(shù)據(jù),譯碼時(shí)從該數(shù)據(jù)序列中分離出碼字,由碼字去找出所對(duì)應(yīng)的游程長(zhǎng)度,輸出到打印緩沖區(qū),就完成了譯碼過(guò)程。要提高譯碼速度,可以采用多步合一的方法,減少查找碼表的次數(shù),也就是一次輸入多個(gè)碼元。根據(jù)碼表的特點(diǎn),對(duì)白譯碼而言,第一次可直接輸入4個(gè)碼元,對(duì)于黑譯碼,第一次可輸入2個(gè)碼元,隨后每次可輸入2個(gè)碼元或1個(gè)碼元。
譯碼時(shí),通過(guò)Avalon總線接口將編碼數(shù)據(jù)寫(xiě)入一個(gè)32×256 b的緩沖區(qū);譯碼完成后,將數(shù)據(jù)送到打印緩沖區(qū),由信號(hào)控制模塊控制打印緩沖區(qū)的復(fù)位、讀時(shí)鐘、讀請(qǐng)求和打印頭時(shí)鐘信號(hào),打印緩沖區(qū)的大小為1×2 048 b。當(dāng)寫(xiě)入個(gè)數(shù)記到1 728時(shí),就會(huì)進(jìn)行讀操作。如果出現(xiàn)誤碼,寫(xiě)入個(gè)數(shù)超過(guò)1 728時(shí),F(xiàn)IFO清零,此時(shí)不進(jìn)行讀操作,而是將誤碼的那行數(shù)據(jù)丟棄,并加入一行白點(diǎn)(1 728個(gè)‘0’)。傳真譯碼電路如圖5所示。
在譯碼電路中,檢測(cè)到EOL后,將對(duì)譯碼緩沖區(qū)的數(shù)據(jù)交替地進(jìn)行白譯碼、黑譯碼、白譯碼操作。其中譯碼碼表的地址和數(shù)據(jù)寬度均為8 b。譯碼時(shí),接收4 b數(shù)據(jù)(白碼元),通過(guò)形成的8 b地址來(lái)查找碼表并返回一個(gè)8 b數(shù)據(jù)Ram_Data,并根據(jù)此數(shù)據(jù)低2位的值來(lái)進(jìn)行下一步操作。當(dāng)Ram_Data低2位為‘01’時(shí),輸出數(shù)據(jù)高6位的值,此時(shí)終止碼使能有效;當(dāng)Ram_Data低2位為‘11’時(shí),輸出數(shù)據(jù)高6位的值,此時(shí)形成碼使能有效;當(dāng)Ram_Data低2位為‘00’時(shí),表示接收1 b數(shù)據(jù)和Ram_Data相加形成新地址;當(dāng)Ram_Data低2位為‘10’時(shí),表示接收2 b數(shù)據(jù)和Ram_Data相加形成新地址;繼續(xù)查找碼表,重復(fù)操作,直到譯出碼元或出錯(cuò)為止。查找黑白碼表不同的是:對(duì)于白譯碼而言,由于最短碼字長(zhǎng)度為4,所以第一次可直接查找4 b碼元,隨之可查找2 b或1 b碼元;而對(duì)于黑譯碼而言,由于最短的碼字長(zhǎng)度為2,所以第一次查找2 b碼元,隨之可查找2 b或1 b碼元;輸出的6 b數(shù)據(jù)為連續(xù)黑點(diǎn)或連續(xù)白點(diǎn)的個(gè)數(shù)。將譯碼后的數(shù)據(jù)存入1×2 048 b的打印緩沖區(qū),當(dāng)存儲(chǔ)數(shù)據(jù)滿(mǎn)一行時(shí),輸出到打印頭打印,待清空后再進(jìn)行下一行的譯碼。掃描到打印一行的時(shí)間要求是10 ms,所以譯碼完成后進(jìn)行等待,直到數(shù)據(jù)鎖存后再進(jìn)行下一行的譯碼。譯碼狀態(tài)轉(zhuǎn)移圖如圖6所示。
5 仿真驗(yàn)證與系統(tǒng)測(cè)試
采用基于碼表遍歷的驗(yàn)證策略,對(duì)電路進(jìn)行仿真驗(yàn)證,并查看輸出波形圖,結(jié)果均與設(shè)計(jì)要求一致。仿真部分波形圖如圖7所示。
其中,fifo_data為編碼數(shù)據(jù);dot_cont為譯出的總點(diǎn)數(shù);white_black_flag為黑白標(biāo)志位,‘1’表示黑,‘0’表示白。
該電路通過(guò)QuartusⅡ環(huán)境下的SOPC配置CPU核,在Altera公司的FPGA開(kāi)發(fā)板上進(jìn)行下載,并在NiosⅡ開(kāi)發(fā)環(huán)境中使用軟件測(cè)試該電路,通過(guò)寄存器驅(qū)動(dòng)電路工作,經(jīng)過(guò)掃描,CPU核向電路寫(xiě)入編碼數(shù)據(jù),待輸出標(biāo)識(shí)位有效后,再讀出譯碼后數(shù)據(jù),通過(guò)傳真機(jī)打印出來(lái)。綜合結(jié)果表明電路可以工作在100 MHz時(shí)鐘頻率下。
將傳真標(biāo)準(zhǔn)樣張編碼數(shù)據(jù)送給譯碼模塊完成對(duì)譯碼電路的測(cè)試,打印出的圖像滿(mǎn)足測(cè)試標(biāo)準(zhǔn)。然后將標(biāo)準(zhǔn)樣張?jiān)褰?jīng)過(guò)掃描編碼,送給譯碼打印,輸出打印結(jié)果與原稿比對(duì)。通過(guò)反復(fù)調(diào)試,軟硬件運(yùn)行穩(wěn)定,達(dá)到系統(tǒng)功能指標(biāo)。
6 結(jié)語(yǔ)
本文采用兩級(jí)編碼和快速譯碼的設(shè)計(jì)思路,在FPGA芯片上實(shí)現(xiàn)了編譯碼電路和外設(shè)控制器。上層軟件通過(guò)寄存器接口完成對(duì)硬件系統(tǒng)的控制,經(jīng)過(guò)仿真驗(yàn)證與測(cè)試,電路對(duì)傳真數(shù)據(jù)正確編譯碼,與軟件系統(tǒng)相配合為高性能的雙網(wǎng)傳真機(jī)提供了可靠的技術(shù)基礎(chǔ)。
評(píng)論