- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验三 常用模块电路的设计
一、实验目的:
掌握QuartusII宏功能模块的设计方法。
掌握VHDL设计ROM和RAM的方法。
掌握数控分频器的设计方法。
掌握4×4键盘扫描模块设计方法。
掌握PS2接口电路设计方法。
了解640×480VGA显示控制电路的原理和设计方法。
二、实验的硬件要求:
EDA/SOPC实验箱。
计算机。
三、实验原理
见各实验内容。
四、实验内容:
数控分频器的设计。
要求:将10KHz时钟信号分频,分别输出10Hz、1kHz、1250Hz时钟信号。
分频的原理与计数器差不多,需要定义一个信号量来控制计数范围为分频数,另外控制在一个计数周期内输出一段低电平“0”和另一段高电平“1”。
分频器部分源码如图3.1a、图3.1b所示:
图3.1a 数控分频器VHDL代码
如果用于计数的信号量定义为“std_logic_vector”类型的。如“Count10”,也可以将其最高位作为分频后的时钟输出:即使用语句“Clk_1kHz=Count10(3);”,如图2.11b所示,此时输出时钟信号占空比是多少?是否可以改变?。
图3.1b 十分频的VHDL代码
如果分频数为2n,“n为整数”,如8分频,Count8定义为“std_logic_vector”类型,使用下图的语句序列实现,更加简洁:
图3.1c 分频数为2n时,代码可以更为简洁
同理,“Count8(1)”是几分频输出?“Count8(0)” 是几分频输出?
2、4×4键盘扫描模块设计
①图3.2是4×4键盘阵列电路原理图。行字符ROW[3..0]表示一行的状态,COL[3..0] 表示一列的状态。使用时采用行扫描方式检测按键,即设置COL[3..0]中某一位为“0”,其余为“1”,如COL=“1011”(COL[2]=’0’)表示选择第三行(COL[2]对应一行);然后检测ROW[3..0]的值,全“1”说明没有任何键按下,为“0”一位表示该列有键按下,如ROW=“0101”表示第二和第四列(ROW[2] 、ROW[4]对应列)被按下;结合COL和ROW即可确定按键值(如“8”和“C”)。
图3.2 4×4键盘阵列电路原理图
②图3.3是键盘扫描模块VHDL源码。注意:是如何判断键盘按下时刻的?
图3.3 键盘扫描模块VHDL源码
图3.4 键盘扫描模块仿真波形
③图3.4是键盘扫描模块仿真波形,注意:如何设置Kr的值?
④在实验箱上测试4×4键盘扫描模块,可按图3.5连接,为便于观察,使用1Hz频率时钟信号,Kr、Kc连接FPGA引出线ROW[3..0]和COL[3..0],BCD_OUT通过译码器显示在数码管上。
图3.5 4×4键盘扫描模块测试电路
3、PS/2接口键盘读取模块设计
①PS2通信协议是一种双向同步串行通迅协议。通迅的两端通过CLOCK(时钟信号端)同步,并通过DATA(数据端口)交换数据。任何一方如果想要抑制另外一方的通迅时,只需要把CLOCK拉到低电平。
PS2控制接口仅使用到两条传输端口,一为频率端口,另一则为数据端口如图3.6所示,且此传输埠必为三态(Tri-State)并具有双向(bidirectional)特性。PS2 传输产品上,常见为鼠标与键盘,两者的驱动原理均相同,仅扫描码(scan code)不同。因此我们以PS2键盘为例进行说明。
②PS2标准,规范每笔数据传输包含起始位(start bit)、扫描码(scan code)、奇同位检查(odd parity)、以及终止位(stop bit)共计11位,并以双向串行数据传输的方式,达到通信的目的。且当主机端(host)或从机端(slave)并无传送或接收数据时,数据传输端口及频率均将升为高电位。图3.7所示为每一笔数据传输所包含之内容如下:
a. 起始位(“0”)
b. 8位数据宽度的扫描码( scan code )。
c. 奇同位检查,使扫描码与奇同位加起来1的数字为奇数个。
d. 终止位(“1”)
图3.7 PS/2接口时序
③键盘其实就是一个大型的按键矩阵,它们由安装在电路板上的处理器(叫做“键盘编码器”)来监视着。虽然不同的键盘可能采用不同的处理器,但是它们完成的任务都是一样的,即监视哪些按键被按下,哪些按键被释放了,并将这些信息传送到主机。
每个键盘被分配了唯一的通码(键盘按下时发送的编码)和断码(键盘释放时发送的编码),这样主机通过查找唯一的扫描码就可以确定是哪个按键被按下或释放。
PS2 键盘扫描码见“键盘扫描码表”
④图3.8是PS/2接口键盘接收模块的VHDL源码,在对其进行仿真时,可以将“keyboard_clk_filtered”信号输出查看。
图3.8 PS/2接口键盘接收模
文档评论(0)