摘要:分频器的应用 设计输出频率为2KHz,占空比为0~100%可调PWM信号的应用电路。要求占空比的分辨率为1%。 分析 要求占空比为0~100%可调,分辨率为1%。应该有101种,用复位信号控制占空比为1,用100进制BCD码计数器控制占空比为0~99%。 开发板提供50MHz时钟,分频至2KHz,
阅读全文
摘要:分频器的设计 内容: 通用分频器; 偶分频; 奇分频; 半数分频。 实现: 通用分频器 分频公式 N是分频系数。 通用分频器的实现方法:应用N进制计数器,将要被分频的信号作为计数器的时钟脉冲,分频信号作为输出。取M值在计数到0至N-1期间,0-M设置输出为低,M-N-1设置为高。M可调。 //通用N
阅读全文
摘要:逻辑分析仪的应用 内容 建立测试工程; 新建逻辑分析文件; 添加需要观测的信号; 配置采样参数; 保存逻辑分析仪文件; 重新编译和配置。 Signal Tap Logic Analyzer是内嵌于Quartus Prime开发环境中的逻辑分析仪。可以将Signal Tap Logic Analyze
阅读全文
摘要:在友晶DE10-Lite开发板实现8051单片机 1. 移植过程 利用FPGA片内资源构建51系统。软核来自https://www.oreganosystems.at/。还需要添加rom、ram和ramx。rom用来放51单片机的程序,即编译后的.hex文件。ram用来运行51单片机程序。时钟由PL
阅读全文
摘要:PWM呼吸灯 设计一个周期是8ms的PWM,用来控制LED实现呼吸灯的效果。 1. 设计分析 PWM的周期为8ms,每0.1秒调整一次占空比,分10档,从95%、85%、....5%。这里需要设计三个计数器:8ms的计数器,0.1秒的计数器,1秒的计数器。经过测试可以发现档数越多,间隔越小,呼吸灯的
阅读全文
摘要:基于FPGA的贪吃蛇游戏 之代码解析 1. 代码结构 代码结构包含7格.v文件。 下面依次解析。 2. 代码解析 (1) seg_display.v 数码管的译码模块是最熟悉,最简单的模块了。这里是共阳极的数码管,用case语句编码即可。从上图可以看到,这个模块被例化了3次,分别驱动3个数码管显示,
阅读全文
摘要:零、基于FPGA的贪吃蛇游戏设计概述 1. 代码结构 系统模块如图所示: snake_top.v:顶层模块,例化子模块,连接及与外部信号通信; game_ctrl_unit.v:游戏状态控制模块,控制状态转换和输出; snake.v:控制蛇身运动方向和蛇身增长; appple_generate.v:
阅读全文
摘要:八、贪吃蛇之状态机设计 贪吃游戏采用mealy状态机。 1. 游戏状态控制状态机 用一段式编码来完成游戏控制过程: 各状态说明: (1) RESTART:复位后进入重启状态,屏幕显示欢迎界面,6秒后进入游戏难度选择界面,等待选择难度。 (2) START:用SW[2:0]选择游戏难度,按下KEY[3
阅读全文
摘要:九、贪吃蛇之蛇身控制 1. 目标 (1) 游戏难度决定蛇身移动的速度; (2) 蛇身增长; (3) 蛇身移动。 2. 蛇身速度控制 用计数器来控制蛇身移动的时间间隔,间隔短,移动快,游戏难度就越难。在游戏难度选择界面,用SW[2:0]选择难度。 //蛇身移动速度 else begin clk_cnt
阅读全文
摘要:贪吃蛇之食物(苹果)产生模块设计 1. 设计目标 初始化后,产生食物坐标(24,10),然后判断蛇头的坐标与食物的坐标是否相同,若相同,代表食物被吃掉,然后用随机数产生新的食物坐标。 2. 区域划分 游戏的基本单位block还是用16*16像素,屏幕四周用1个block宽度的边框代表墙,食物用一个b
阅读全文
摘要:VGA显示图片 1. VGA显示图片的原理 图片比之前显示的色块和字符的数据量大,所以使用rom来存储图片。用到ROM IP。可以存放mif和hex格式,需要先把图片转换成mif格式。 2. 如何制作mif文件 先用windows自带的画图工具打开图片,调整大小。步骤:点击重新调整大小,不勾选“保持
阅读全文
摘要:VGA显示文字 VGA字符显示的原理 把要显示的字符转换成字符点阵,然后编码存储,着色的部分为1,其它为0.然后在VGA上输出显示。 字符点阵生成软件: https://www.zhetao.com/fontarray.html 这里一个字符为32*32bit,字符点阵如下图: 字符编码存到内存里的
阅读全文
摘要:VGA驱动色块显示 了解了VGA的显示原理和ADV7123控制后,再去实现色块显示就容易了。 像素坐标 跟显示色条不同,要在屏幕上不同的地方显示色块,需要用像素坐标来定位色块。其实,就是分别用行扫描的计数值和场扫描的计数值来表示坐标的x,y值。 VGA显示数字 比如,用屏幕显示计分的数字 本质,是把
阅读全文
摘要:在QP里调用Modelsim需要先设置仿真参数和工具路径。 在QP调用modelsim的步骤 1. 在QP里建立工程,代码,分析综合;2. 添加testbench代码,processing-start-start testbench template writer,修改测试代码。3. 在assigm
阅读全文
摘要:实验2 基于加法器的设计 设计7段数码管的驱动电路,4位输入,7段输出,使数码管能显示16进制的16个字符,注意DE10-Lite的数码管是共阳连接. 直接用case语句写出查找表.代码如下: module seg7(data_in,data_out); input [3:0]data_in; ou
阅读全文
摘要:实验1 在MAX10 FPGA上实现组合逻辑 实验前的准备工作:参照讲义步骤安装Quartus,Modelsim和System Builder。阅读材料:1)推荐的文件组织形式;2)Verilog 1:概述和Verilog 2:重点是assign语句。 参考资源:友晶网站上的关于DE10-Lite实
阅读全文
摘要:用反函数来验证模块功能 通常编写testbench观察仿真波形的方法,对于简单直观的电路功能验证来说很方便,但当电路输出比较复杂时,就比较无趣.这里以七段数码管的译码电路为例,编写了一个发函数功能的模块来验证其功能.所谓反函数就是把设计模块的输入输出端颠倒一下,衔接在设计模块后面,然后验证输入和输出
阅读全文
摘要:DE10-Lite加速度计使用教程 1. 概述 DE10-Lite实验板上有一片5轴加速度计芯片ADXL345(通常称为G-sensor)。它可以用来测量板子的倾斜角度。本文讲述如何以50次/秒的速度读取其X轴和Y轴的数据。 在使用SystemBuilder建立工程时,勾选Accelerometer
阅读全文
摘要:M9K内存使用教程 M9K内存是Altera内嵌的高密度存储阵列.现代的FPGA基本都包含类似的不同大小的内存. M9K的每个块有8192位(包含校验位实际是9216位).配置灵活.详细了解M9K可参考其讲义或MAX10 FPGA的文档. 如何在Quartus里使用M9K 通过以下步骤可以初始化M9
阅读全文
摘要:使用组合逻辑电路驱动VGA显示器 1. 概述 本文讲述一种不使用缓冲存储器驱动VGA显示的简单方法.其中,VGA分辨率采用DE10-Lite建议使用的640X480.像素的时钟25MHz,刷新率59.5帧/秒. 在DE10-Lite实验板上,VGA接口使用4位数值表示色彩.全0表示不亮,全1表示亮度
阅读全文