VHDL接口设计实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

then
then
rgb<="111";
rgb<="110“;
end if;
--RGB输出显示竖彩条
end if;
end process p3;
VGA接口设计要点:
1、扫描频率 2、时序关系 3、管脚分配 4、RGB地、数字地应初始化置低电平 5、行、场消隐期都应将RGB信号置“0” 6、部分显示器可能需要进行“自动设置” 操作
if(H_cnt>=143 and H_cnt<=223)
then
then
rgb<="001";
rgb<="000";
elsif(H_cnt>543 and H_cnt<=623)
elsif(H_cnt>223 and H_cnt<=303)
tLeabharlann Baiduen
then
rgb<="011";
rgb<="010";
平线的左端,重复上面的过程;当电子束完成右下角一点
的扫描后,形成一帧。此后,电子束又回到左上方起点,
开始下一帧的扫描。
完成一行扫描所需时间称为水平扫描时间,其倒数称为行频率;完成 一帧(整屏)扫描所需的时间称为垂直扫描时间,其倒数为垂直扫描频率(场 频率),又称刷新频率,即刷新一屏的频率。常见的有 60Hz、75Hz 等,标准 VGA 显示的场频 60Hz, 行频为 31.5kHz。
接口设计实例
本章目录 ➢ UART接口设计 ➢ PS/2接口设计 ➢ VGA接口设计
UART接口设计
UART(Universal Asynchronous Receiver Transmitter), 即通用异步收发器,是一种常用的串行数据接口。
➢ 两条信号线,TXD和RXD,全双工工作 ➢ 数据格式:起始位(1位)、数据位(5~8位)、奇偶
cnt=9? 0
1
cnt←0
R2
OUT←reg(7 downto 0) P←reg(8)
PS/2接口设计
PS/2接口一般用于鼠标和键盘,最常见的为6脚的 mini-DIN,其引脚结构和外形如下图所示
PS/2接口设计
FPGA与PS/2设备连接图
需要外接 上拉电阻
PS/2接口设计
PS/2通讯协议
➢ Start:起始位,低电平 ➢ Data0~7:数据位,低位在前,高位在后 ➢ Parity:校验位,为奇校验 ➢ Stop:停止位,高电平
当键盘要向主机通信时,键盘总是首先检查时钟线是否为高电平,如果不是则 表明是主机正在通信,必须缓冲要发送的数据直到重新获得总线的控制权(键 盘有16个字节的缓冲区),即等到时钟线是高电平才能发送数据。而且从键盘 到主机的数据只能在时钟的下降沿时才能被读取。
PS/2接口设计
PS/2数据包
键盘的状态每改变一次,键盘至少会发出三个字节的数据包,在有键按下时会 向主机发送该键的通码(Make Code),当键释放时发送断码(Break Code)。 例如:键“A”的通码为 0x1C, 键“A”的断码为:0xF0, 0x1C,因此当要传 送键“A”时,键盘发送的数据包的代码是:0x1C,0xF0, 0x1C。
N
H_cnt>=703 and H_cnt<=783?
Y RGB<=”110” Y RGB<=”111”
部分参考代码:
p1:process(clk) --产生场频与行频
begin
if(clk'event and clk='1')then
if(H_cnt=799)then
p2:process(H_cnt,V_cnt) --场频行频输出
15
11
9 保留 ( 各家定义不同 ) 10 数字地 11 地址码 12 地址码 13 行同步 14 场同步 15 地址码 ( 各家定义不同 )
VGA显示接口设计
显示器相关知识:
场回归
行扫描
目前微机显示器几乎都采用逐行扫描显示。
行回归



……
从屏幕左上角一点开始,向右对各个像素逐点进行
扫描, 形成一条水平线;到达最右端后,又回到下一条水
Y V_cnt<=0
结束
RGB输出部 分稍作修改即可显 示彩色竖条纹
V_cnt>=34 and V_cnt<=514?
Y
H_cnt>=143 and H_cnt<=223?
N
H_cnt>=223 and H_cnt<=303?
Y RGB<=”000” Y RGB<=”001”
H_cnt>=623 and H_cnt<=703?
部分按键的数据包
PS/2接口设计
VHDL程序:读取通码(Make Code)
process(clk) variable counter:integer range 0 to 10 :=0;
begin if falling_edge(clk) then save_scan_code(counter)<=PS2_DATA; if counter=10 then counter:=0; scan_code <=save_scan_code(8 DOWNTO 1 ); else counter:=counter+1; end if; end if;
驱动VGA显示器显示简单彩条
按照分辨率640*480刷新率60Hz驱动显示器 需要的时钟为25.2MHz,要求不严格时,也可由 50MHz时钟源直接二分频得到25MHz时钟代替。
CLK为内部时钟输入端,其余接口直接分配到对应接口的物理管脚。 (只需使用1、2、3、6、7、8、10、13、14号)
由于开发板芯片的管脚直接连接至VGA接口,RGB均只能输出数字信号, 故可显示的色彩共有2^3=8种(“000”to“111”)
end if;
else
end if;
vs<='0';
end process p1;
end if;
end process p2;
部分参考代码:
p3:process(H_cnt,V_cnt)
begin
if(V_cnt>=34 and V_cnt<=514)
then
elsif(H_cnt>463 and H_cnt<=543)
elsif(H_cnt>623 and H_cnt<=703)
elsif(H_cnt>303 and H_cnt<=383)
then
then
rgb<="101";
rgb<="100";
elsif(H_cnt>703 and H_cnt<=783)
elsif(H_cnt>383 and H_cnt<=463)
end process;
VGA接口设计
VGA(Video Graphics Array)是IBM在1987年随PS/2机一起 推出的一种视频传输标准,具有分辨率高、显示速率快、 颜色丰富等优点,在彩色显示器领域得到了广泛的应用。
普通显示器VGA接口管脚定义(母头)
5
1
1 红基色 red R 2 绿基色 green G 3 蓝基色 blue B 4 地址码 ID Bit 5 自测试 ( 各家定义不同 ) 6 红地 7 绿地 8 蓝地
GRB 场消隐
图像
场消隐 下一行图像
VS
Ta Tb
Tc
Td Tg
Te Tf
场扫描时序要求/像素(即输出一行 line 的时间间隔):
Ta(场头同步):2 Tb:25 Tc:8 Td(场图像):480 Te:8 Tf:2
Td(场图像):525
刷新率为60Hz时,所需的像素时钟:F=800*525*60=25.2MHz
P ←data(7)^data(6)^data(5)…
S2
TXD←temp(0) , cnt←cnt+1 tmp←’0’&tmp(7 downto 1)
cnt=8? 0
S3
1
TXD←P
S4
TXD←’1’
接收模块ASM图
R0
RXD 1
R1
0
reg←RXD&reg(8 downto 1)
cnt←cnt+1
依照VGA的标准 时序可画出显示一帧静 止图像的基本ASM图 (640*840)
开始 N
Clk’event and clk=’1’?
Y H_cnt=799?
Y H_cnt<=0;
行扫描
N H_cnt<=H_cnt+1;
RGB<=RGB_data;
RGB输 出
场扫描
N V_cnt<=V_cnt+1
V_cnt=524?
H_cnt<=0;
begin
if(V_cnt=524)then
if(H_cnt>95)then
V_cnt<=0;
hs<='1';
else
else
V_cnt<=V_cnt+1;
hs<='0';
end if;
end if;
else
if(V_cnt>1)then
H_cnt<=H_cnt+1;
vs<='1';
校验位(1位或没有)、停止位(1~2位),停止位和 空闲状态规定为高电平 ➢ 常用波特率:9600,19200,38400,115200…
UART
TXD RXD GND
TXD
RXD UART
GND
UART接口设计
基本UART的帧格式:
发送模块ASM图
S0
TXD←’1’
0
flag
S1
1
tmp ← data , TXD←’0’ , cnt←0
VGA时序格式:
以640*480分辨率的VGA标准时序图为例
GRB 行消隐
图像
行消隐 下一行图像
HS
Ta Tb
Tc
Td Tg
Te Tf
行扫描时序要求/像素(即输出一个像素 pixel 的时间间隔): Ta(行头同步):96 Tb:40 Tc:8 Td(行图像):640 Te:8 Tf:8 Td(行图像):800
相关文档
最新文档