系统总体结构:
语音录制回放系统基工作原理模拟语音信号通模数转换器(AD)转换成数字信号通FPGA(控制器)数字信号存储存储器中 回放时 FPGA控制数存储器中读出 然通数模转换器(DA)转换成模拟信号 放扬声器输出方面利UART模块实现PC通信功(实现数传载功)功均LCD显示界面键操作协作实现设计方案系统总体结构框图图 1 示
二模块设计:
1AD采样模块:
系统AD转换芯片TI公司TLC549
(1)TLC549工作原理:
TLC549芯片带片系统时钟该时钟I/OCLOCK独立工作需特殊速度相位匹配CS高时数输DATA OUT端处高阻状态时I/O CLOCK起作种CS控制作允许时片TLc549时I/OcLOCK减少路(片)A/D时I/O控制端口工作时序图2示:
图2TLC549时序图
时序图出通常控制时序操作:
(I)先Cs置低部电路测CS降等两部时钟升降(14us)确认变化动前次转换结果高位(D7)位输出DATAOUT端
(Ⅱ)前四I/O CLOCK周期降次移出第234第5位(D6D5D4D3)片采样保持电路第4I/O CLOCK降开始采样模拟辅:
(Ⅲ)接3IO CLOCK周期降移出第678(D2D1D0)转换位(4)片采样保持电路第8I/OCLOCK周期降移出第678(D2D1D0)转换位然保持功持续4部时钟周期接着开始进行32部时钟周期A/D转换第8I/O cLCOKCS必须高I/O LOCK保持低电种状态需维持36部系统时钟周期等保持转换工作完成果CS低时I/O CLOCK出现效干扰脉微处理器控制器器件I/O时序失步cs高时出现次效低电引脚重新初始化脱离原转换程36部系统时钟周期结束前实施步骤(1)~(4)重新启动次新A/D转换时正进行转换终止应注意时输出前次转换结果正进行转换结果特定时刻采样模拟信号应第8I/O CLOCK时钟降该时刻应芯片第4I/O CLOCK时钟降开始采样第8I/O CLOCK降开始保存
更详细信息参见:附加文档:TLC549数手册PDF
(2)驱动程序设计:
图3根时序图VHDL语言编写TLC549驱动程序综合成原理框图
图3 TLC549驱动生成原理图
中:
ClockFPGA外部时钟信号50Mhz
Reset异步复位TLC549复位低电效
Enable TLC549工作决定芯片否工作高电效
Sdat_inTLC549转换8串行输入数
Adc_clkTLC549工作外部时钟1Mhz
Cs_nTLC549片选低电效
DataokTLC549转换数完成标志位通知存储器接收
Data_outFPGA串转Sdat_in送存储器
具体VHDL程序说明参见附加文档二:TLC549驱动doc
2DA转换模块:
系统DA转换芯片TI公司TLC5620
(1)TLC5620工作原理
TLC5620带缓基准输入端 (高阻抗) 四路8位电压输出数字模拟转换器(DAC) DAC 产生范围基准电压倍两倍( GND )间输出电压 DAC 单调变化器件简单单5V电源工作器件包含电复位功确保重复启动通简单3线串行总线TLC5620实现数字控制总线CMOS兼容易
常微处理器微控制器器件接口 11 位命令字 8 位数 2 DAC 选择位 1 范围( range )位组成者允许倍二倍输出范围间作出选择转换时序图4示:
图4 TLC5620转换时序(ldac0)
LOAD高电时数CLK降时钟步送入DATA端口图3示旦数位送入LOAD变脉低电便数串行输入寄存器传送选择DAC果LDAC低电选择DAC输出电压更新LOAD变低电数输入时高效位(MSB)前
表1列出A1A0位更新DAC选择RNG位控制DAC输出范围RNG低电时输出范围加基准电压GND间 RNG高电时 输出范围加基准电压两倍GND间
表1 TLC5620串行输入译码
更详细信息参见:附加文档三:TLC5620数手册PDF
(2)驱动程序设计:
图5根时序图VHDL语言编写TLC5620驱动程序综合成原理框图
图5 TLC5620驱动生成原理图
中:
ClockFPGA外部时钟信号50Mhz
Rst异步复位TLC5620复位低电效
Wr_act TLC5620转换高电效
Wr_dataTLC5620转换8行数
Dac_clkTLC5620工作外部时钟1Mhz
Dac_data送入TLC5620串行数
Data_okTLC5620转换数完成标志位通知存储器发数
Dac_load串行接口装载控制
Dac_ldac DAC更新锁存控制(里始终置0)
具体VHDL程序说明参见附加文档四:TLC5620驱动doc
3数存储模块
设计利FPGA开发板SPI FLASH配置芯片M25P16作存储器
(1) M25P16工作原理
M25P16意法半导体推出款高速16 Mbit串行Flash32部分组成部分256页页256字节M25P16具先进写保护机制读取数时钟速率75 MHz具整体擦扇区擦灵活页编程指令写保护功
(Ⅰ)M25P16指令操作
M25P16 12条操作指令指令8位操作时先片选信号(S)拉低选中器件然输入8位操作指令字节串行数片选信号S拉低第时钟升采样M25P80启动部控制逻辑行完成相应操作指令时需输入址字节必时加入哑读字节操作完毕片选信号拉高面简单介绍条系统指令操作
① 写指令(WREN)
页面编程时写寄存器者擦前必须先写指令设置寄存器写位电写效指令操作页面编程写寄存器擦指令完成时该写位复位写指令时序较简单指令0000 0110(06h)片选信号拉低第时钟升送入Flash先输入高位指令输入完成立拉高片选信号否Flash保护机制认干扰信号执行该指令该指令时序图图6示:
图6 写时序图
② 读数指令(READ)
片选信号拉低首先输入8位读数指令READ(03h)输入读取容24位首址址指数时钟降输出数输出址动递增指址传输址指数址达高位动转首址000000h循环读出Flash中全部容直片选信号拉高读数指令时序图7示
图7 读数指令时序图
③ 页面编程指令(PP)
页面编程前首先输入写指令Flash完成寄存器设置片选信号拉低输入页面编程指令PP(02h)紧接着输入编程24位址输入数次输入256字节数果超出保留输入256字节数输完毕片选信号必须置高否执行页面编程指令页面编程指令时序图图8示
图8 页编程指令时序图
④ 片擦指令(BE)
片擦指令Flash中0置1写入数前定先擦指令执行条指令前需先执行写指令该指令时序图图9示
图9 片擦指令时序图
需注意指令操作完成需留出段时间Flash进行数处理256字节编程周期(tpp)1 ms左右1字节数页编程指令编程周期10us左右整体擦周期(tBE)5 s~10 s指令输入结束拉高片选信号足够长时间执行指令操作时读取部寄存器值监控述周期否结束旦检测指令执行完毕执行续操作样节省时间果忽略Flash处理时间会发生错误导致Flash法正确执行指令
更芯片说明参见附加文档五:M25P16数手册PDF
(2)M25P16驱动程序
该驱动程序状态较便理解笔者绘出状态转换图图10示
图10 存储器状态转换图
VHDL语言编写M25P16 FLASH驱动程序综合成原理框图示
图11 M25P16驱动生成原理图
中:
CLK_INFPGA外部时钟信号50Mhz
Rst异步复位低电效
TLC5620_okDA输出字节完毕标志位升效
TLC549_okAD转换字节完毕标志位升效
PlayflashDA输出数高电效
Recordflash输入数高电效
Eraseflash执行擦指令高电效
Sdoflash(设备)数输出端口
Ri PC接收字节数完毕标志位升效
Ti PC发送字节数完毕标志位升效
Uploaddownload传载高电效
Datind_outflash输入输出数
Spi_clkflash时钟信号
Spi_csflash片选低电效
Sdiflash 数指令输入端
具体VHDL程序说明参见附加文档六:M25P16驱动doc
4显示界面设计
显示界面带中文字库FYD128640402B液晶
(1) LCD12864液晶原理
FYD128640402B种具4位8位行2线3线串行种接口方式部含国标级二级简体中文字库点阵图形液晶显示模块显示分辨率128×64 置819216*16点汉字12816*8点ASCII字符集利该模块灵活接口方式简单方便操作指令构成全中文机交互图形界面显示8×4行16×16点阵汉字 完成图形显示低电压低功耗显著特点里8位行接口方式
12864身操作较丰富面仅系统操作进行简单介绍
① 控制器接口信号说明:
RSRW配合选择决定控制界面4种模式表2示:
RS
RW
功说明
L
L
MPU写指令指令暂存器(IR)
L
H
读出忙标志(BF)址记数器(AC)状态
H
L
MPU写入数数暂存器(DR)
H
H
MPU数暂存器(DR)中读出数
表2 lcd12864控制界面功模式
系统LCD进行写操作整系统中RW始终置低通RS高低电位区写指令写数
E()信号配合执行操作功表3示:
E状态
执行动作
结果
高——>低
IO缓——>DR
配合W进行写数指令
高
DR——>IO缓
配合R进行读数指令
低低——>高
动作
表3 E()信号功表
出进行写址数操作时E信号高低变化(RWL)数传入LCDDR
② 指令说明
系统中表4示3条指令:
指
指 令 码
功
令
RS
RW
D7
D6
D5
D4
D3
D2
D1
D0
清
显示
0
0
0
0
0
0
0
0
0
1
DDRAM填满20H设定DDRAM址计数器(AC)00H
显示状态开关
0
0
0
0
0
0
1
D
C
B
D1 整体显示 ON
C1 游标ON
B1游标位置反白允许
写数RAM
1
0
数
数D7——D0写入部RAM (DDRAMCGRAMIRAMGRAM)
表4 LCD指令
中显示状态开关指令B~D取值指令功指令00001100(0ch)时表示游标整体显示指令00001111(0fh)时表示带游标显示等
③8位行写时序图
系统仅LCD进行写数操作8位行写时序图示:
图12 LCD8位行模式写时序图
时序图出RW低电位时E高低电位变化数送入LCDRS区输入指令数
④中文显示
LCD中发两次相应8位字节指令实现字符中文字库具体码值表见相应附件
中文显示址构成表5示:
80H
81H
82H
83H
84H
85H
86H
87H
90H
91H
92H
93H
94H
95H
96H
97H
88H
89H
8AH
8BH
8CH
8DH
8EH
8FH
98H
99H
9AH
9BH
9CH
9DH
9EH
9FH
表5 字符显示址值
址值知该LCD显示32字库中文字符设计已足够
更信息详见附加文档七:12864手册pdf
(2)驱动程序设计
LCD机界面总体设计图:
图13 LCD机界面总体分解图
系统代码状态机进行描述页面较程序涉状态较状态相似性VHDL程序中行代码:
when s1>
cnt_1cnt_1+1 cnt_1适延时保证LCD处理
if cnt_1<3 then e<'1'rs<'0'rw<'0'state
when s2>
cnt_1cnt_1+1
if cnt_1<3 then e<'1'rs<'1'rw<'0'state
图14VHDL语言编写LCD12864机界面驱动程序综合成原理框图
图14 LCD12864驱动生成原理图
中:
ClkFPGA外部时钟信号50Mhz
Rst异步复位低电效
LEFT 控制键左键高电效
Right控制键右键高电效
Ok确认键高电效
LightLCD背光灯高效
RwrseLCD控制信号端
Up_endown_en系统传载指令(界面键协产生)
Play_enrecord_en系统播放录制指令(界面键协产生)
Erase_en系统擦指令(界面键协产生)
Spi_rst系统复位指令(界面键协产生)
DoutLCD接收数IO
具体VHDL程序说明参见附加文档八:LCD驱动doc
5UART模块设计
通异步收发器(Universal Asynchronous Receiver TransmitterUART)数字通信领域流行广泛种接口设备控制符合RS 232C协议计算机串行设备间通信
(1)UART通信原理
UART采通RS 232C串行接口标准该协议优点广泛计算机串行外设中置种接口传输距离达15 m实现较简单双连接时少需2条导线实现基通信UART具体帧格式图1示帧数开始位数位奇偶校验位停止位四部分次组成中开始位低电数位长度5678等奇偶校验模式校验奇校验偶校验粘附校验1粘附校验0停止位高电具体长度1位15位2位等选项通UART部线性控制寄存器确定没数发送时发送接收引脚保持高电
帧格式图示:
图15 uart帧格式
(2) UARTFPGA实现
实现中UART包括接收模块发送模块2部分具体功:
①接收模块 具体作接收串行数输入端口RXD送异步数进行串/转换送存储器
②发送模块 作存储器送行数进行/串转换串行数TXD输出串口接收模块相
该模块具体程序说明详见附加文档九:UARTdoc
6系统整体原理图
通面模块综合连接出系统整体结构原理图图示:
图16 系统代码原理图连接图
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档