文档库 最新最全的文档下载
当前位置:文档库 › PS2键盘FPGA程序

PS2键盘FPGA程序

PS2键盘FPGA程序
PS2键盘FPGA程序

PS2键盘FPGA程序

转发评论

2011-04-28 14:30

PS2的接口如上图,除了Pin 5 和Pin 1 其他的引脚对解码没有什么意义。而下图是PS 2协议的时序图。PS2协议对数据的移位是“Clock 的下降沿”有效。PS2时钟的频率比较慢,大约是10Khz左右。

第N位:0 1---8 9 10 11

取值:0 x---x x 1 x

意义:开始位数据位寄偶校验位停止位应答位

PS2的一帧是12位。对PS2进行解码时,除了第1~8位数据位以外,其余的位都可以无视。

键盘的编码有“通码”(Make)和“断码”(Break)之分。看得简单一点就是,“通码”是某按键的“按下事件”,“断码”是某按键的“释放事件”。

假设,我按下“W”键不放,每秒大约会输出10个“0x1d”的“通码”。然后我释放“W”键,就会输出“0xF0 0x1d” 的“断码”。编码键盘还有一个老规则,就是一次只有一个输出。

再假设我按下“W”键不放,然后我再按下“X”键不放,那么会输出“0x1d”“0x22”“0x22”........ 的通码。如果此时我放开“X”键,就会输出“0xf0 0x22”的“断码”,此时“W”键的“通码”已经无效。但是当我释放“W”键的时候,依然会输出“0xf0 0x1d”,“W”键的“断码”。

至于组合键“ Shift + ?” ,“ Ctrl + ?”都是软件的工作,还需要详解。

FPGA模拟PS2协议refer to https://www.wendangku.net/doc/966310605.html,/kingst/ 2010-10-14 09:40:58| 分类:fpga | 标签:ps2_clkr data2 fpga rst reg |字号大中小订阅

/*出处https://www.wendangku.net/doc/966310605.html,/kingst/*/

在以前使用单片机对PS2进行解码的时候,一句话就是苦。如果是CPLD 或者FPGA 的前提下,PS2的解码才有意义。

PS2的接口如上图,除了Pin 5 和Pin 1 其他的引脚对解码没有什么意义。而下图是PS2协议的时序图。PS2协议对数据的移位是“Clock 的下降沿”有效。PS2时钟的频率比较慢,大约是10Khz左右。

第N位

属性

开始位

1~8

数据位

9

校验位

10

结束位

PS2的一帧是11位。对PS2进行解码时,除了第1~8位数据位以外,其余的位都可以无视。

对编码键盘“键盘码”的简单认识

普通计算机采用的都是“编码键盘”,但是“编码键盘”的“编码方式”有分为“第一套”“第二套”和“第三套”。“第二套”的编码使用较为普遍,大致上的民用键盘都是采用“第二套”编码方式。

键盘的编码有“通码”(Make)和“断码”(Break)之分。看得简单一点就是,“通码”是某按键的“按下事件”,“断码”是某按键的“释放事件”。

假设,我按下“W”键不放,每秒大约会输出10个“0x1d”的“通码”。然后我释放“W”键,就会输出“0xF0 0x1d” 的“断码”。编码键盘还有一个老规则,就是一次只有一个输出。

再假设我按下“W”键不放,然后我再按下“X”键不放,那么会输出“0x1d”“0x22”“0x22”........ 的通码。如果此时我放开“X”键,就会输出“0xf0 0x22”的“断码”,此时“W”键的“通码”已经无效。但是当我释放“W”键的时候,依然会输出“0xf0 0x1d”,“W”键的“断码”。

至于组合键“ Shift + ?” ,“ Ctrl + ?”都是软件的工作,我们就无视吧。

在组合模块ps2_module.v 中包含了两个功能块:“电平检测模块” detect_module.v 和"ps2解码模块" ps2_decode_module 。detect_module.v 的添加时为了检查PS2 时钟信号的“下降沿”,此外也是为了使模块的建立更简单。ps2_decode_module.v 如字面上的意思,对每帧(十一位一组数据)的数据进行解码和过滤的行为,最后将一字节数据输出PS2_Data,然后PS2_Done_Sig 产生一个高脉冲,表示完成一次性的操作。

ps2_decode_module.v 最主要的核心是在第31~55行。同样这个模块也是采用“仿顺序操作”的写法。步骤i一开始会停留在0(33行),当检查到H2L_Sig 的变化,我们知道PS2一帧数据的第第0位是开始位,所以无视。在接下来的8个位都是数据位,PS2的数据位是从最低位开始,最高位结束。然后对PS2_Data_Pin_In 引脚进行读值(第36~37行)。

PS2一帧数据的第9~10位是校验位和结束位,执行无视操作(39~40行)。在i 等于11的时候(42行),我们要进行判断,读取的“数据是通码还是断码?”,如果是“通码”(44行),就进入49行随后产生一个高脉冲的完成信号(49~53行),最后返回33行,等待下一次的操作。

如果是“断码”(43行),进入46行随后对“断码”采取无视的操作(46~47行),最后产生一个高脉冲的完成信号,然后返回第33行(49~53行)。

实验八的PS2解码仅对“通码”执行操作,相反却对“断码”采取无视的行为。实验八的重点主要是如何实现“PS2时钟采样”和“PS2数据采样”操作?

从上图中我们可以看到,黑金的时钟频率比起PS2的时钟频率,大约是2000倍。而detect_module.v 就是利用这2000个时钟信号去采集每个PS2时钟的下降沿(小箭头)。

当detect_module.v 检测到ps2时钟产生下降沿,(detect_module.v 32行)由于布尔的表达式关系,就会产生一个高脉冲经H2L_Sig 信号。PS2协议的一帧数据大约是11个数据位,换句话说就会产生11个下降沿,也就是说会产生11次高脉冲的H2L_Sig。

PS2时钟在每一个下降沿的时候,PS2数据就会“设置”(移位)数据,而ps2_decode_module.v 中的31~55行,就是对PS2数据的移位进行“数据采样”。假设PS2时钟在第一次的下降沿,自然而然PS2数据会“设置”第0位数据(ps2_decode_module.v 34行),ps2_decode_module.v 采取无视的操作,接下来的八位数据位才是真正需要的数据位。

有一点比较值得注意的是在ps2_decode_module.v 第42~44行。从上面我们知道,黑金的时钟频率对ps2的时钟频率有2000倍的相差,从另一个角度去理解的话,距离每一次PS2时钟信号的下降沿,黑金拥有2000个可以执行的时间。然而在第42~44行只用了一个时间去判断,余下还剩下1999个可空闲的时间。

也就是说,采样和被采样的频率如果相差越大,采样方可执行的空余的时间就越多,在设计上就越轻松。

实验八总归也就是属于PS2解码的部分。然而笔者在设计上,对ps2_detect_module.v 添加了PS2_Done_Sig, 这个信号无疑是表示了“一次性操作”已经完成的次数。因为编码的键盘,只要按着不放就会一直发送“通码”,如果笔者针对“通码”去设计的话,笔者永远“只能得到键盘的数据”,已不是“通码”和“次数”这两方。

实验八演示中的“命令控制模块”cmd_control_module.v 会对“W”,“X”和“Ctrl”键作出反应。在cmd_control_module.v 的输出是4位的信号,初始值是4'b0001。当“W”键按下,就会产生左移的效果,“X”键则是右移。至于“Ctrl”键会产生“互换”。

第16~35行是cmd_control_module.v 的核心部分,当PS2_Done_Sig 产生高脉冲(23行),该控制模块就会对PS2_Data 产生反应。8'h1d 是“W”键的通码,而8'h22 是“X”键的通码,至于8'h14 是“Ctrl”键的通码。

“W”键,产生左移效果(26~27行),

“X”键,产生右移效果(29~30行),

“Ctrl”键,产生互换效果(32~33行)。

exp08_demo.v 是ps2_module 和cmd_control_module.v 的组合模块。ps2_module.v 的具体介绍请参考实验七。

实验八演示结论:

我以前接触过很多有关PS2的解码实验,都非常执着与“字符”有关。其实无论是什么输出,只要有效的利用“通码”就不成问题。最重要的是如何编辑这些“通码”称为有效的“命令”!?

还有另一点,编码键盘虽然很方便,但是编码键盘是无法取代独立键盘。在实验八演示中,在两个键同时按下的时候,仅有按下最迟的一方才有输出“通码”的权利。相反独立按键是完全“并行”执行, 不会出现对输出争先恐后的事件。所以在许多方面编码键盘还是不完美。

最后还有一点,就是所有拥有PS2接口的设备,一般上都是“低速”设备,这一点要好好的记住。

实验八总结:

实验八主要是表达“低级建模”在“读取”或者“采样”上发挥的效果。在众多同样的试验中,笔者常常可以看到所有模块都是往一个 .v 文件里面写,虽然在编辑上会很方便,但是在“理解的方式上”,“理解的形状上”又是怎么一回事?

同样的,实验八和实验七建模的数量都是不相上下,或者可以说这是“低级建模”的普遍缺点,但是读者是不是会察觉到?当你在组合模块,将一个一个模块实例化,思路无比是清晰,而且设计的工作也容易?

好吧,换另一个话题去讨论实验八的重点:

always @ (posedge CLK )

......

always @ (posedge CLK )

......

如上面的代码,在同样一个模块中出现了两个always 块,在一般的情况下,我们都会“从上往下”读,类似顺序操作那样看待。如果你的理解能力好,或者已经习惯了,那么这事儿不成问题。但是在实际的操作中,所有always块都是“并行”执行者,很多新手都会被自身的“假概念”误导。如果将上述的问题反映在建模上,往往会使更多新手进入瓶颈。

就像在第二章的实验,笔记一直在强调“并行”的概念和重要性。“低级建模”的多模块设计无疑是能很好的发挥“并行”的概念。如实验八演示中,detect_module.v,ps2_decode_module.v,cmd_control_module.v ,它们在每一个时钟的上升都是在独立工作着。至于它们会不会被触发或者协调执行,完全是依赖自身早已被设定好的功能。

detect_module.v 在每一个时钟源的上升沿(posedge CLK),如果检测到PS2时钟发生下降沿,就会经H2L_Sig 产生高脉冲,除此之外它的工作就结束了。

然而ps2_decode_module.v 在每一个时钟源的上升沿(posedge CLK),如果检测到H2L_Sig 的高脉冲,就会对PS2数据一帧数据的执行采集和过滤的动作,最后将完整的数据输出至PS2_Data, 然后PS2_Done_Sig 产生一个时钟的高脉冲,它就完工了。

cmd_control_module.v 在每一个时钟源的上升沿(posedge CLK),如果被PS2_Done_Sig 触发,那么它就会依据PS2_Data 的数据作出相对的反应,否则它就一直保持沉默。

虽然整体的主观上,它们会如同连线关系一方接着触发着一方。但是实际上,每一个模块都保持者独立关系,只有在“触发”的时候才工作。当然“低级建模”所强调的准则不仅是重视在“并行”的理解上,还有好多好多的故事会发生在这本笔记的后面。

参考网址:https://www.wendangku.net/doc/966310605.html,/view/336b8ded5ef7ba0d4a733bff.html 基于FPGA的标准PS2键盘接口电路设计_百度文库.url

华为_FPGA设计流程指南

FPGA设计流程指南 前言 本部门所承担的FPGA设计任务主要是两方面的作用:系统的原型实现和ASIC的原型验证。编写本流程的目的是: ●在于规范整个设计流程,实现开发的合理性、一致性、高效性。 ●形成风格良好和完整的文档。 ●实现在FPGA不同厂家之间以及从FPGA到ASIC的顺利移植。 ●便于新员工快速掌握本部门FPGA的设计流程。 由于目前所用到的FPGA器件以Altera的为主,所以下面的例子也以Altera为例,工具组合为modelsim + LeonardoSpectrum/FPGACompilerII + Quartus,但原则和方法对于其他厂家和工具也是基本适用的。

目录 1. 基于HDL的FPGA设计流程概述 (1) 1.1 设计流程图 (1) 1.2 关键步骤的实现 (2) 1.2.1 功能仿真 (2) 1.2.2 逻辑综合 (2) 1.2.3 前仿真 (3) 1.2.4 布局布线 (3) 1.2.5 后仿真(时序仿真) (4) 2. Verilog HDL设计 (4) 2.1 编程风格(Coding Style)要求 (4) 2.1.1 文件 (4) 2.1.2 大小写 (5) 2.1.3 标识符 (5) 2.1.4 参数化设计 (5) 2.1.5 空行和空格 (5) 2.1.6 对齐和缩进 (5) 2.1.7 注释 (5) 2.1.8 参考C语言的资料 (5) 2.1.9 可视化设计方法 (6) 2.2 可综合设计 (6) 2.3 设计目录 (6) 3. 逻辑仿真 (6) 3.1 测试程序(test bench) (7) 3.2 使用预编译库 (7) 4. 逻辑综合 (8) 4.1 逻辑综合的一些原则 (8) 4.1.1 关于LeonardoSpectrum (8) 4.1.1 大规模设计的综合 (8) 4.1.3 必须重视工具产生的警告信息 (8) 4.2 调用模块的黑盒子(Black box)方法 (8) 参考 (10) 修订纪录 (10)

FPGA原理图方式设计流程图

2 Quartus II软件的使用、开发板的使用 本章将通过3个完整的例子,一步一步的手把手的方式完成设计。完成这3个设计,并得到正确的结果,将会快速、有效的掌握在Altera QuartusII软件环境下进行FPGA设计与开发的方法、流程,并熟悉开发板的使用。 2.1 原理图方式设计3-8译码器 一、设计目的 1、通过设计一个3-8译码器,掌握祝组合逻辑电路设计的方法。 2、初步了解QuartusII采用原理图方式进行设计的流程。 3、初步掌握FPGA开发的流程以及基本的设计方法、基本的仿真分析方法。 二、设计原理 三、设计内容 四、设计步骤 1、建立工程文件 1)双击桌面上的Quartus II的图标运行此软件。

开始界面 2)选择File下拉菜单中的New Project Wizard,新建一个工程。如图所 示。 新建工程向导

3)点击图中的next进入工作目录。 新建工程对话框 4)第一个输入框为工程目录输入框,用来指定工程存放路径,建议可根据自己需要更改路径,若直接使用默认路径,可能造成默认目录下存放多个工程文件影响自己的设计,本步骤结束后系统会有提示(当然你可不必理会,不会出现错误的)。第二个输入框为工程名称输入框。第三个输入框为顶层实体名称输入框,一般情况下保证工程名称与顶层实体名称相同。设定完成后点击next。

指定工程路径、名称 5)设计中需要包含的其它设计文件,在此对话框中不做任何修改,直接点 击next。 工程所需其它文件对话框

6)在弹出的对话框中进行器件的选择。在Device Family框中选用Cyclone II,然后在Available device框中选择EP2C35F484C8,点击next进入下一步。 器件选择界面 7)下面的对话框提示可以勾选其它的第三方EDA设计、仿真的工具,暂时不作任何选择,在对话框中按默认选项,点击next。

FPGA设计流程

基于多种 EDA工具的FPGA设计流程 发表时间:2008-6-30 蒋昊李哲英来源:万方数据 关键字:FPGA EDA CPU 信息化应用调查在线投稿加入收藏发表评论好文推荐打印文本 本文介绍了FPGA的完整设计流程,其中包括电路设计与输入、功能仿真、综合优化、综合后仿真、实现与布局布线、时序仿真、板级仿真与脸证、调试与加载配置等主要步珠。并通过一个8-bit RISC CPU的设计来例系统地介绍了利用多种EDA工具进行 FPGA协同设计的实现原理及方法 近年来,随着微电子学的迅速发展以及SoC(System on Chip,片上系统)技术在设计领域引起的深刻变革, EDA(Electornic Design Automatic,电子设计自动化)工具在系统设计中的地位愈发重要。特别是20世纪90年代后,电子系统已经由电路板级发展为ASIC(Application SpecificIntegrated Circuit,专用集成电路),FPGA(Field Porgrammable Gate Array,现场可编程门阵列)以及嵌人式系统等多种模式,其中FPGA设计正是当前数字系统设计领域中的重要方式之一。 本文以Altera公司的FPGA为目标器件,通过一个8-bit RISC CPU的设计实例,系统地介绍了FPGA的完整设计流程以及开发过程中用到的多种EDA工具,包括Modelsim,Synplify,QuatrusII,并重点说明如何使用这些EDA工具进行协同设计。 1FPGA的设计流程 一般来说,完整的FPGA设计流程包括电路设计与输人、功能仿真、综合优化、综合后仿真、实现与布局布线、时序仿真、板级仿真与验证、调试与加载配置等主要步骤,如图1所示。电路设计与输人是指通过某些规范的描述方式,将工程师的电路构思输人给EDA工具,常用的设计方法有HDL(Hardwaer Description Language,硬件描述语言)设计输人法与原理图设计输人法。目前进行大型工程设计时,最常用的设计方法是HDL设计输人法,它利于自顶向下设计以及模块的划分与复用,可移植性和通用性好,设计不因芯片的工艺与结构的不同而变化,更利于向ASIC移植。 电路设计完成后,要用专用的仿真工具对设计进行功能仿真(FunctionalSimulation),验证电路功能是否符合设计要求。功能仿真又称前仿真(Per-Simulation)。通过仿真能及时发现设计中的错误,加快设计进度,提高设计的可靠性。综合(Synthesis)优化是指将HDL语言、原理图等设计输人翻译成由基本门、RAM、触发器等基本逻辑单元组成的逻辑网表,并根据目标与要求(约束条件)优化所生成的逻辑网表,输出标准格式的网表文件,供FPGA厂商的布局布线器进行实现。综合后仿真(Post Synthesis Simulation)的作用是检查综合出的结果与原设计是否一致。作综合后仿真时,要把综合生成的标准延时格式SDF(Standard Dela Format)文件反标注到综合仿真模型中去,可估计门延时带来的影响。综合后仿真虽然比功能仿真精确一些,但是只能估计门延时,不能估计线延时,仿真结果与布线后的实际情况还有一定

FPGA基本设计流程资料

FPGA基本设计流程 首先建立工作库目录,以便设计工程项目的存储。注意不要将文件夹 1 建立工作库文件夹和编辑设计文件 1.1 新建一个文件夹(注意文件夹不能用中文,也不要用数字) 任何一项设计都是一项工程(Project),都必须首先为此工程建立一个放置与此工程相关的所有设计文件的文件夹。此文件夹将被EDA软件默认为工作库(Work Library)。一般,不同的设计项目最好放在不同的文件夹中,而同一工程的所有文件都必须放在同一文件夹中。在建立了文件夹后就可以将设计文件通过Quartus II的文本编辑器编辑并存盘,这里新建文件夹在E盘中,取名为 jsq,则其路径是e:\jsq。步骤如下: 1.2 源程序输入 打开计算机桌面上图表,选择菜单File→New,出现如图1所示见面,在New窗口Device Design Files中选择编译文件的语言类型,这里选择VHDL File,选好后用鼠标左键点击OK,出现源程序输入窗口如图2所示(以十进制为例)。 图1 选择编译文件的语言类型

图2 源程序输入窗口 源程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS PORT (CLK,RST,EN : IN STD_LOGIC; CQ : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC ); END CNT10; ARCHITECTURE behav OF CNT10 IS BEGIN PROCESS(CLK, RST, EN) VARIABLE CQI : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF RST = '1' THEN CQI := (OTHERS =>'0') ; --计数器异步复位 ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿 IF EN = '1' THEN --检测是否允许计数(同步使能) IF CQI < 9 THEN CQI := CQI + 1; --允许计数, 检测是否小于9 ELSE CQI := (OTHERS =>'0'); --大于9,计数值清零 END IF; END IF; END IF; IF CQI = 9 THEN COUT <= '1'; --计数大于9,输出进位信号 ELSE COUT <= '0'; END IF;

FPGA开发设计流程和功能实现

FPGA设计流程与功能实现 前言 本部门所承担的FPGA设计任务主要是两方面的作用:系统的原型实现和ASIC的原型验证。编写本流程的目的是: ●在于规范整个设计流程,实现开发的合理性、一致性、高效性。 ●形成风格良好和完整的文档。 ●实现在FPGA不同厂家之间以及从FPGA到ASIC的顺利移植。 ●便于新员工快速掌握本部门FPGA的设计流程。 由于目前所用到的FPGA器件以Altera的为主,所以下面的例子也以Altera为例,工具组合为modelsim + LeonardoSpectrum/FPGACompilerII + Quartus,但原则和方法对于其他厂家和工具也是基本适用的。

目录 1. 基于HDL的FPGA设计流程概述 (1) 1.1 设计流程图 (1) 1.2 关键步骤的实现 (2) 1.2.1 功能仿真 (2) 1.2.2 逻辑综合 (2) 1.2.3 前仿真 (3) 1.2.4 布局布线 (3) 1.2.5 后仿真(时序仿真) (4) 2. Verilog HDL设计 (4) 2.1 编程风格(Coding Style)要求 (4) 2.1.1 文件 (4) 2.1.2 大小写 (5) 2.1.3 标识符 (5) 2.1.4 参数化设计 (5) 2.1.5 空行和空格 (5) 2.1.6 对齐和缩进 (5) 2.1.7 注释 (5) 2.1.8 参考C语言的资料 (5) 2.1.9 可视化设计方法 (6) 2.2 可综合设计 (6) 2.3 设计目录 (6) 3. 逻辑仿真 (6) 3.1 测试程序(test bench) (7) 3.2 使用预编译库 (7) 4. 逻辑综合 (8) 4.1 逻辑综合的一些原则 (8) 4.1.1 关于LeonardoSpectrum (8) 4.1.1 大规模设计的综合 (8) 4.1.3 必须重视工具产生的警告信息 (8) 4.2 调用模块的黑盒子(Black box)方法 (8) 参考 (10) 修订纪录 (10)

华为FPGA设计流程指南

华为FPGA设计流程指南 前言 本部门所承担的FPGA设计任务要紧是两方面的作用:系统的原型实现和ASIC的原型验证。编写本流程的目的是: ●在于规范整个设计流程,实现开发的合理性、一致性、高 效性。 ●形成风格良好和完整的文档。 ●实现在FPGA不同厂家之间以及从FPGA到ASIC的顺利 移植。 ●便于新职员快速把握本部门FPGA的设计流程。 由于目前所用到的FPGA器件以Altera的为主,因此下面的例子也以Altera为例,工具组合为modelsim +

LeonardoSpectrum/FPGACompilerII + Quartus,但原则和方法关于其他厂家和工具也是差不多适用的。

目录 1. 基于HDL的FPGA设计流程概述 (1) 1.1 设计流程图 (1) 1.2 关键步骤的实现 (2) 1.2.1 功能仿真 (2) 1.2.2 逻辑综合 (2) 1.2.3 前仿真 (3) 1.2.4 布局布线 (3) 1.2.5 后仿真(时序仿真) (4) 2. Verilog HDL设计 (4) 2.1 编程风格(Coding Style)要求 (4) 2.1.1 文件 (4) 2.1.2 大小写 (5) 2.1.3 标识符 (5) 2.1.4 参数化设计 (5) 2.1.5 空行和空格 (5) 2.1.6 对齐和缩进 (5) 2.1.7 注释 (5) 2.1.8 参考C语言的资料 (5) 2.1.9 可视化设计方法 (6) 2.2 可综合设计 (6)

2.3 设计名目 (6) 3. 逻辑仿真 (6) 3.1 测试程序(test bench) (7) 3.2 使用预编译库 (7) 4. 逻辑综合 (8) 4.1 逻辑综合的一些原则 (8) 4.1.1 关于LeonardoSpectrum (8) 4.1.1 大规模设计的综合 (8) 4.1.3 必须重视工具产生的警告信息 (8) 4.2 调用模块的黑盒子(Black box)方法 (8) 参考 (10) 修订纪录 (10)

fpga设计心得体会

fpga设计心得体会 篇一:fpga设计的几个实例 Verilog HDL设计练习一.简单的组合逻辑设计 练习一.简单的组合逻辑设计 目的: 掌握基本组合逻辑电路的实现方法。 这是一个可综合的数据比较器,很容易看出它的功能是比较数据a与数据b,如果两个数据相同,则给出结果1,否则给出结果0。在Verilog HDL中,描述组合逻辑时常使用assign结构。注意equal=1:0,这是一种在组合逻辑实现分支判断时常使用的格式。模块源代码: " ,.b); 等为模块要连接的信号 endmodule 仿真波形(部分): 练习: 设计一个字节(8位)比较器。 要求:比较两个字节的大小,如a[7:0]大于 b[7:0]输出高电平,否则输出低电平,改写测试模型,使其能进行比较

全面的测试。 练习二. 简单时序逻辑电路的设计 目的:掌握基本时序逻辑电路的实现。 在Verilog HDL中,相对于组合逻辑电路,时序逻辑电路也有规定的表述方式。在可综合的Verilog HDL模型,我们通常使用always块和 @或 @的结构来表述时序逻辑。下面是一个1/2分频器的可综合模型。 lk_in,.clk_out); endmodule 仿真波形: 练习:依然作clk_in的二分频clk_out,要求输出与上例的输出正好反相。编写测试模块,给出仿真波形篇二:fpga设计流程 1. FPGA开发流程:电路设计与设计输入仿真验证:利用Xilinx集成的仿真工具足矣逻辑综合:利用XST工具布局布线:利用Xilinx的Implementation Tool工具 FPGA配置下载:利用iMPACT工具 2. 时序标注文件是指SDF(Standard Delay Format Timing Annotation)文件,在Xilinx公司的FPGA/CPLD设

FPGA设计流程指南模板

FPGA设计流程指南模板 1

FPGA设计流程指南 前言 本部门所承担的FPGA设计任务主要是两方面的作用: 系统的原型实现和ASIC的原型验证。编写本流程的目的是: ●在于规范整个设计流程, 实现开发的合理性、一致性、高 效性。 ●形成风格良好和完整的文档。 ●实现在FPGA不同厂家之间以及从FPGA到ASIC的顺利移 植。 ●便于新员工快速掌握本部门FPGA的设计流程。 由于当前所用到的FPGA器件以Altera的为主, 因此下面的例子也以Altera为例, 工具组合为modelsim + LeonardoSpectrum/FPGACompilerII + Quartus, 但原则和方法对于其它厂家和工具也是基本适用的。 2

3

目录 1. 基于HDL的FPGA设计流程概述 (1) 1.1 设计流程图 (1) 1.2 关键步骤的实现 (2) 1.2.1 功能仿真 (2) 1.2.2 逻辑综合 (2) 1.2.3 前仿真 (3) 1.2.4 布局布线 (3) 1.2.5 后仿真( 时序仿真) (4) 2. Verilog HDL设计 (4) 2.1 编程风格( Coding Style) 要求 (4) 2.1.1 文件 (4) 2.1.2 大小写 (5) 2.1.3 标识符 (5) 2.1.4 参数化设计 (5) 2.1.5 空行和空格 (5) 2.1.6 对齐和缩进 (5) 2.1.7 注释 (5) 2.1.8 参考C语言的资料 (5) 2.1.9 可视化设计方法 (6) 2.2 可综合设计 (6) 4

2.3 设计目录 (6) 3. 逻辑仿真 (6) 3.1 测试程序( test bench) (7) 3.2 使用预编译库 (7) 4. 逻辑综合 (8) 4.1 逻辑综合的一些原则 (8) 4.1.1 关于LeonardoSpectrum (8) 4.1.1 大规模设计的综合 (8) 4.1.3 必须重视工具产生的警告信息 (8) 4.2 调用模块的黑盒子( Black box) 方法 (8) 参考 (10) 修订纪录 (10) 5

FPGA设计方案

FPGA课程设计 题目:全天候温度纪录仪的设计与FPGA实现 姓名: 学号: 院系:信息科学与工程学院 专业:计算机技术

摘要 本设计有效的克服了传统的数字温度计的缺点,采用自上而下的设计思路, 绘制出了系统结构流程图,最后又在硬件上通过对其进行调试和验证。基于 FPGA在Quartus II13.0软件下应用Verilog HDL语言编写程序,采用ALTRA 公司Cyclone- IV系列的EP4CE40F23I7 芯片进行了计算机仿真,并给出了相 应的仿真结果。该电路能够实现很好的测温功能。 关键字:数字温度计;FPGA;Quartus II130.;Verilog HDL;EP4CE40F2317 Abstract This design effectively overcomes the traditional digital thermom eter’s weaknesses and takes a top-down approach to design flow chart of system, and finally pass the circuits to the hardware to deb ug and verify it. This design is based on FPGA using Verilog HDL la nguage to write program in Quartus II software, adopting EP4CE40F 23I7 chip of Cyclone- IV series of ALTRA company for computer sim ulation and at the same time showing the corresponding simulation result. This circuit is able to carry out excellent temperature- meas urement function. KeyWords:Digital thermometer;FPGA;Quartus II 13.0;Verilo g HDL;EP4CE40F2317

FPGA学习步骤(精)

FPGA 在目前应用领域非常,在目前的单板设计里面,几乎都可以看到它的身影。从简单的逻辑组合,到高端的图像、通信协议处理,从单片逻辑到复杂的 ASIC 原型验证,从小家电到航天器,都可以看到 FPGA 应用,它的优点在这里无庸赘述。从个人实用角度看,对于学生,掌握 FPGA 可以找到一份很好的工作,对于有经验的工作人员,使用 fgpa 可以让设计变得非常有灵活性。掌握了 fpga 的设计,单板硬件设计就非常容易(不是系统设计 ,特别是上大学时如同天书的逻辑时序图,看起来就非常亲切。但 fpga 的入门却有一定难度, 因为它不像软件设计, 只要有一台计算机, 几乎就可以完成所有的设计。 fpga 的设计与硬件直接相关, 需要实实在在的调试仪器,譬如示波器等。这些硬件设备一般比较昂贵,这就造成一定的入门门槛, 新人在入门时遇到一点问题或者困难, 由于没有调试设备, 无法定位问题,最后可能就会放弃。其实这时如果有人稍微指点一下,这个门槛很容易就过去。 1、工欲善其事,必先利其器。 计算机必不可少。目前 FPGA 应用较多的是 Altera 和 xilinx 这两个公司,可以选择安装 quartusII 或者 ISE 软件。这是必备的软件环境。 硬件环境还需要下载器、目标板。虽然有人说没有下载器和目标板也可学习fpga ,但那总是纸上谈兵。这就像谈女朋友,总是嘴上说说,通个电话,连个手都没牵,能说人家是你朋友?虽说搭建硬件环境需要花费,但想想,硬件环境至多几百元钱,你要真的掌握 FPGA 的设计,起薪比别人都不止高出这么多。这点花费算什么? 2、熟悉 verilog 语言或者 vhdl 语言 ,熟练使用 quartusII 或者 ISE 软件。 VHDL和 verilog 各有优点,选择一个,建议选择 verilog 。熟练使用设计软件,知道怎样编译、仿真、下载等过程。 起步阶段不希望报一些培训班,除非你有钱,或者运气好,碰到一个水平高、又想把自己的经验和别人共享的培训老师, 不然的话, 培训完后总会感觉自己是一个冤大头。入门阶段可以在利用网络资源完成。 3、设计一个小代码,下载到目标板看看结果

相关文档