新闻中心

EEPW首页>EDA/PCB>设计应用> 双网传真机的编译码电路设计与实现

双网传真机的编译码电路设计与实现

作者: 时间:2011-07-11 来源:网络 收藏

h.JPG



4 译码电路单元设计
对于MHC码而言,首先它是一个变长码,发送端在编码时把游程长度所对应的码元数据不留间隙的存入发送缓冲区中,经过调制载波后发送出去。接收端解调出来的数据,即编码数据,译码时从该数据序列中分离出码字,由码字去找出所对应的游程长度,输出到打印缓冲区,就完成了译码过程。要提高译码速度,可以采用多步合一的方法,减少查找码表的次数,也就是一次输入多个码元。根据码表的特点,对白译码而言,第一次可直接输入4个码元,对于黑译码,第一次可输入2个码元,随后每次可输入2个码元或1个码元。
译码时,通过Avalon总线接口将编码数据写入一个32×256 b的缓冲区;译码完成后,将数据送到打印缓冲区,由信号控制模块控制打印缓冲区的复位、读时钟、读请求和打印头时钟信号,打印缓冲区的大小为1×2 048 b。当写入个数记到1 728时,就会进行读操作。如果出现误码,写入个数超过1 728时,FIFO清零,此时不进行读操作,而是将误码的那行数据丢弃,并加入一行白点(1 728个‘0’)。传真译码电路如图5所示。
在译码电路中,检测到EOL后,将对译码缓冲区的数据交替地进行白译码、黑译码、白译码操作。其中译码码表的地址和数据宽度均为8 b。译码时,接收4 b数据(白码元),通过形成的8 b地址来查找码表并返回一个8 b数据Ram_Data,并根据此数据低2位的值来进行下一步操作。当Ram_Data低2位为‘01’时,输出数据高6位的值,此时终止码使能有效;当Ram_Data低2位为‘11’时,输出数据高6位的值,此时形成码使能有效;当Ram_Data低2位为‘00’时,表示接收1 b数据和Ram_Data相加形成新地址;当Ram_Data低2位为‘10’时,表示接收2 b数据和Ram_Data相加形成新地址;继续查找码表,重复操作,直到译出码元或出错为止。查找黑白码表不同的是:对于白译码而言,由于最短码字长度为4,所以第一次可直接查找4 b码元,随之可查找2 b或1 b码元;而对于黑译码而言,由于最短的码字长度为2,所以第一次查找2 b码元,随之可查找2 b或1 b码元;输出的6 b数据为连续黑点或连续白点的个数。将译码后的数据存入1×2 048 b的打印缓冲区,当存储数据满一行时,输出到打印头打印,待清空后再进行下一行的译码。扫描到打印一行的时间要求是10 ms,所以译码完成后进行等待,直到数据锁存后再进行下一行的译码。译码状态转移图如图6所示。

i.JPG



5 仿真验证与系统测试
采用基于码表遍历的验证策略,对电路进行仿真验证,并查看输出波形图,结果均与设计要求一致。仿真部分波形图如图7所示。

a.JPG


其中,fifo_data为编码数据;dot_cont为译出的总点数;white_black_flag为黑白标志位,‘1’表示黑,‘0’表示白。
该电路通过QuartusⅡ环境下的SOPC配置CPU核,在Altera公司的FPGA开发板上进行下载,并在NiosⅡ开发环境中使用软件测试该电路,通过寄存器驱动电路工作,经过扫描,CPU核向电路写入编码数据,待输出标识位有效后,再读出译码后数据,通过传真机打印出来。综合结果表明电路可以工作在100 MHz时钟频率下。
将传真标准样张编码数据送给译码模块完成对译码电路的测试,打印出的图像满足测试标准。然后将标准样张原稿经过扫描编码,送给译码打印,输出打印结果与原稿比对。通过反复调试,软硬件运行稳定,达到系统功能指标。

6 结语
本文采用两级编码和快速译码的设计思路,在FPGA芯片上实现了电路和外设控制器。上层软件通过寄存器接口完成对硬件系统的控制,经过仿真验证与测试,电路对传真数据正确,与软件系统相配合为高性能的提供了可靠的技术基础。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭