找回密码
 立即注册
首页 资源区 代码 南京大学-数字逻辑与计算机组成实验2024秋-VGA接口实验 ...

南京大学-数字逻辑与计算机组成实验2024秋-VGA接口实验思路(NJU-DLCOE-LAB6)

屋稷删 4 天前
声明:本博客仅供学习参考,请勿作出直接抄袭等违反学术诚信的行为

实验环境


  • 软件:Vivado 2020.2
  • 硬件:Nexys A7-100T开发板
本门课程的实验环境似乎有两种,代码逻辑可能有所不同,请自行注意
实验主要目标


  • 结合键盘模块,按键逻辑正常
  • 屏幕有显示
  • 在前面的基础上,实现删除、退格、清屏等进阶操作
  • 输入特殊字符串,按下回车后显示对应自定义内容
个人思路与实现

前言

首先本次实验附件实现的内容是正确的,不需要你改动,即vgadraw、vgactrl、vgasim的逻辑没有问题,不需要你更改。vgactrl中的参数建议改成640*480比例的,后面实验会方便一点。参数更改如下:
  1.    parameter    H_Sync_Width = 96;
  2.    parameter    H_Back_Porche = 48;
  3.    parameter    H_Active_Pixels = 640;
  4.    parameter    H_Front_Porch = 16;
  5.    parameter    H_Totals = 800;
  6.    parameter    V_Sync_Width = 2;
  7.    parameter    V_Back_Porche = 33;
  8.    parameter    V_Active_Pixels = 480;
  9.    parameter    V_Front_Porch = 10;
  10.    parameter    V_Totals = 525;
复制代码
总览

然后我们先梳理一下给出的实验文件结构:.coe文件都是静态图像部分的,scancode文件是键盘部分的,clkgen文件是生成时钟的模块(我没有使用),ASC16是字模文件,vgactrl负责生成同步信号和x轴y轴位置,vgadraw是一个函数,根据vgactrl部分的x轴y轴信息生成颜色信号,vgasim模块将vgactrl和vgadraw实例化,然后整理后统一输出VGA的各种信息
梳理完再看实验要求,我们要实现键盘和屏幕的交互,还要实现简单的伪终端行为,还要实现伪应用功能切换显示动态图片/静态图片/文字。所以我们的设计思路如下:以xterm为主文件,和屏幕键盘交互;先更改移植之前的键盘模块,使之能正常输出信号;然后设计实现伪终端界面,包括键盘信号译码、按字母取字模、按字模信号在屏幕上对应位置显示黑白像素等基础操作,以及按下del键、回车键、方向键等的进阶逻辑;然后设计动态图像模块、静态图像模块、文字模块,将其在xterm中实例化,并设计状态机实现终端到这些模块再回到终端的转换
键盘模块

这个前面的实验实现过了,所以没什么好说的,我的实现如下
[code]    module kbd(      input fastclk,      input PS2_CLK,      input PS2_DATA,      output val,      output [7:0] ascii,      output [7:0] ctl,      output c50hz    );    reg [7:0] kb_mem[255:0];    initial    begin      $readmemh("?/scancode.txt", kb_mem, 0, 255);    end        reg [20:0]clk_dis = 0;    reg clk_50hz = 0;    always @(posedge fastclk) begin //100mhz        if (clk_dis >= 1000000) begin //50hz            clk_dis
您需要登录后才可以回帖 登录 | 立即注册