求basys3数字时钟校时电路的verilog代码

高等学校电子与通信工程类专业“十二五”规划教材:数字电子技术与接口技术实验教程百度会学 - 定义优质教育资源
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
高等学校电子与通信工程类专业“十二五”规划教材:数字电子技术与接口技术实验教程
  《高等学校电子与通信工程类专业“十二五”规划教材:数字电子技术与接口技术实验教程》以Digilent公司的Basys2和Nexys3开发板为平台,将数字逻辑设计与硬件描述语言有机结合,内容延伸到微处理器体系结构,同时展示了如何用VerilogHDL和VHDL在FPGA上设计所学数字逻辑电路以及复杂数字系统。
  《高等学校电子与通信工程类专业“十二五”规划教材:数字电子技术与接口技术实验教程》不仅可作为高等学校电气工程、计算机科学与技术、控制科学与工程、电子信息工程、生物医学工程、机械设计制造及其自动化等专业的教材,也可作为数字电路设计工程师和技术人员的参考书。
作者简介更新中
导 读 1第一部分 实验硬件和软件平台介绍第1章 硬件开发平台介绍 10
1.1 Nexys3硬件平台简介 10
1.2 Nexys3电源、时钟及外围接口电路 15
1.2.1 电源 15
1.2.2 时钟 16
1.2.3 简单外围设备电路 17
1.2.4 Pmod连接器 19
1.2.5 VMODS子板 23
1.2.6* VHDC连接器 25
1.3 Nexys3存储器及FPGA配置 25
1.3.1 Nexys3开发板上的存储器 25
1.3.2 FPGA配置 28
1.4 Nexys3硬件平台测试 31
1.4.1 Nexys3出厂时的测试程序 31
1.4.2 使用Adept软件测试Nexys3 31
1.5 Basys2硬件平台简介 32
1.5.1 Basys2开发板资源简介 33
1.5.2 Basys2电源、时钟及简单外围设备介绍 34
1.5.3 Basys2 User Demo 38
参考文献和相关网站 38第2章 软件平台介绍 40
2.1 计算机辅助设计软件工具介绍 40
2.1.1 CAD流程简介 40
2.1.2 各种软件下载安装和实验准备 43
2.2 FPGA设计流程 46
2.2.1 综合 48
2.2.2 实现 48
2.3 ISE软件使用与FPGA设计实例 50
2.3.1 开发板的简单外设实验步骤 50
2.3.2 阅读设计报告 59
2.4* 嵌入式系统开发 61
2.4.1 嵌入式开发套件EDK 62
2.4.2 嵌入式处理器简介 62
2.5 硬件描述语言 65
2.5.1 VHDL简介 67
2.5.2 Verilog HDL简介 69
参考文献和相关网站 71第二部分 传统数字电子技术实验第3章 传统数字电路基础实验 74
3.1 传统数字电路实验过程简介 74
3.1.1 电路连接及注意事项 74
3.1.2 通电和实验 76
3.1.3 数字电路的故障查找和排除 77
3.2 集成逻辑门参数测试实验 78
3.2.1 实验目的 78
3.2.2 实验思路和实验前准备 78
3.2.3 实验内容和步骤 80
3.2.4 实验报告要求 83
3.2.5 实验仪器及器件 83
3.3 集成逻辑门功能测试实验 83
3.3.1 实验目的 84
3.3.2 实验思路和实验前准备 84
3.3.3 实验内容和步骤 85
3.3.4 实验报告要求 87
3.3.5 实验仪器及器件 87
3.4 基于中规模器件的数字钟设计 87
3.4.1 实验目的 87
3.4.2 实验思路和实验前准备 87
3.4.3 实验内容和步骤 97
3.4.4 实验报告要求 97
3.4.5 实验仪器及器件 98
参考文献和相关网站 98第三部分 现代数字电子技术实验第4章 基于HDL的组合逻辑电路实验 100
4.1 逻辑门实验 100
4.1.1 实验目的 100
4.1.2 实验和预习内容 100
4.1.3 实验步骤 101
4.2 比较器实验 107
4.2.1 实验和预习内容 107
4.2.2 实验步骤 109
4.3 多路选择器实验 110
4.4 七段译码器实验 112
4.4.1 七段译码器和数码管基础实验 112
4.4.2 数码管动态扫描显示实验 114
4.5 译码器和编码器实验 121
4.5.1 译码器实验和预习内容 121
4.5.2 优先编码器实验和预习内容 123
4.6 加法器实验 125
4.7 算术逻辑单元(ALU)实验 127
参考文献和相关网站 133第5章 基于HDL的时序逻辑电路实验 135
5.1 边沿D触发器实验 135
5.2 计数器实验 138
5.2.1 计数器简介 138
5.2.2 计数器实验和预习内容 139
5.3 寄存器和移位寄存器实验 144
5.3.1 寄存器实验和预习内容 144
5.3.2 移位寄存器实验和预习内容 145
5.3.3 寄存器和简单外设综合实验 150
5.4 串行序列检测器设计 159
参考文献和相关网站 160第四部分 综合实验和接口实验第6章 数字钟和频率计设计 162
6.1 数字钟设计 162
6.1.1 采用8421BCD码计数的Verilog时钟程序 162
6.1.2 采用模块化设计Verilog时钟程序 166
6.1.3 采用状态机设计动态数码管显示的时钟VHDL程序 171
6.1.4 采用六十进制计时模块设计的VHDL时钟程序 177
6.2 数字频率计 183
6.2.1 VHDL语言设计的频率计 183
6.2.2 用Verilog语言设计的频率计 194第7章 键盘和鼠标接口实验 201
7.1 PS/2接口 201
7.1.1 PS/2接口基本概念 201
7.1.2 PS/2设备发送数据到PC的通信时序 202
7.1.3 PC发送数据到PS/2设备的通信时序 203
7.2 PS/2键盘 205
7.2.1 PS/2键盘的编码 205
7.2.2 PS/2键盘的命令集 206
7.2.3 FPGA实现键盘控制器 208
7.3 PS/2鼠标 214
7.3.1 PS/2鼠标及数据包 214
7.3.2 FPGA实现鼠标控制器 216第8章 VGA接口实验 230
8.1 VGA显示器工作原理和时序 230
8.1.1 基于VGA的显示器工作原理 231
8.1.2 VGA控制器工作时序 232
8.2 VGA控制器设计 233
8.2.1 VGA控制器原理图 233
8.2.2 VGA彩条信号显示Verilog程序 234
8.2.3 VGA彩条信号显示VHDL程序 237
8.2.4 VGA汉字显示Verilog程序 240
8.2.5 VGA显示VHDL程序 244附录A FPGA实验预习报告模板 249附录B Basys2板电路原理图 257
书摘更新中ov7670 basys3,zybo Verilog代码下载
[问题点数:0分]
本版专家分:0
结帖率 42.46%
CSDN今日推荐
匿名用户不能发表回复!|
其他相关推荐尝试用Verilog驱动VGA
本文有些地方是从
直接搬运过来的,这些博客都写的很详细,可以去看下。
VGA驱动显示器用的是扫描的方式,一般是逐行扫描。
逐行扫描是扫描从屏幕左上角一点开始,从左像右逐点扫描,每扫描完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步;
当扫描完所有的行,形成一帧后,用场同步信号进行场同步,并使扫描回到屏幕左上方,同时进行场消隐,开始下一帧。
以下是vs 和 hs的时序简图。
可以看出,VGA一直在扫描,每一场的扫描包括了若干行扫描,如此循环。
综上我们可以知道,一个标准的VGA接口应该有以下的端口:
红色信号 r
绿色信号 g
蓝色信号 b
行同步信号 hs
场同步信号 vs
以及很多的地屏蔽
需要注意的是,r g b信号都是模拟信号,而 hs 和 vs 则是数字信号。
一般而言如果要用数字电路驱动rgb模拟信号端口的话,可以有如下几种办法:
直接用0/1数字信号驱动
因为虽说rgb都是模拟信号驱动的,但是数字信号也是有电压的,可以看做是一个要么恒定不变,要么就跳变的模拟信号。我用的开发板就是这样做的,因为开发板的核心甚至不是FPGA,只是个CPLD,不过胜在不要钱→_→,直接找师兄要的。
这么做的好处是,不需要在数字电路输出端和VGA接口之间加入模拟电路;
而坏处则是,这样的输出只能有8种(2种电压,3个端口,共8个组合)。
在数字信号输出和VGA接口之间加入一段简单的DA电路
利用不同的阻值电阻分压,把数字信号转化为模拟信号,然后再输入到VGA的端口。上图是Digilent公司的Basys3 FPGA开发板原理图的VGA部分。
这样做的好处是,可以用多个数字信号端口输出,组合出更多的模拟信号,增加可输出的颜色种类;
而这样做的坏处是,……反正除了要多搭几个电阻之外我想不到有什么麻烦的地方。
说完颜色信号,就该是同步信号了。
完成一行扫描的时间称为水平扫描时间,其倒数称为行频率;完成一帧(整屏)扫描的时间称为垂直扫描时间,其倒数称为场频率,即刷新一屏的频率,常见的有60Hz,75Hz等等。标准的VGA显示的场频60Hz,行频31.5KHz。
  行场消隐信号:是针对老式显像管的成像扫描电路而言的。电子枪所发出的电子束从屏幕的左上角开始向右扫描,一行扫完需将电子束从右边移回到左边以便扫描第二行。在移动期间就必须有一个信号加到电路上,使得电子束不能发出。不然这个回扫线会破坏屏幕图像的。这个阻止回扫线产生的信号就叫作消隐信号,场信号的消隐也是一个道理。
  显示带宽:带宽指的显示器可以处理的频率范围。如果是60Hz刷新频率的VGA,其带宽达640x480x60=18.4MHz,70Hz的刷新频率分辨率的SVGA,其带宽达=55.1MHz。
  时钟频率:以640x480@59.94Hz(60Hz)为例,每场对应525个行周期(525=10+2+480+33),其中480为显示行。每场有场同步信号,该脉冲宽度为2个行周期的负脉冲,每显示行包括800点时钟,其中640点为有效显示区,每一行有一个行同步信号,该脉冲宽度为96个点时钟。由此可知:行频为525*59.94=31469Hz,需要点时钟频率:525*800*59.94约25MHz.
所以并不是分辨率多高,我们就需要扫描多少行/场;实际上我们需要扫描的比分辨率数值大,示意图见下图:
最坑的是。。。我并没有找到消隐区大小跟分辨率之间有什么数学关系,虽然每个分辨率都有对应唯一的消隐区大小,但是总觉得很坑。。。如果要改变分辨率的话怎么办?
Verilog代码
第一次接触VGA,并没有任何头绪,于是先跑板子的例程,结果发现我那的联想屏幕并不能显示,倒是感应到了有数据,证明确实有输出,但是一直提示“输入信号超出范围”。结果后来换了个的BENQ的小屏幕,虽然还是提示“输入信号超出范围”,但是能看到提示框后面显示出了例程输出的色块,但是输出不全。现在想来应该也是消隐区的问题,例程代码并不能看懂,但是貌似并没有考虑消隐的问题,一直在做分频处理,分出好一些时钟驱动同步端口和数据端口。一开始我以为是板子上的12MHz晶振跟例程里写的50MHz频率不符,后来发现板子自带PLL,输入的原始时钟确实是50MHz,反正一直调参数,调了一整天,调得也很盲目,现在想想自己简直就是个傻缺= =||
后来上github找了很多人的开源代码,好不容易终于找到了一个能用的,readme里说这个分辨率是800*600,但是在屏下也没有出现问题,可能是屏幕能自动适应分辨率吧。代码如下:
效果是在屏幕上显示8个宽度相等的竖条色块,颜色各不相同,反正直接驱动能输出的也就8种颜色。
module Main(
output VGA_HS,VGA_VS, VGA_R, VGA_G, VGA_B
reg[10:0] x_counter
reg[10:0] y_counter
reg [3:1] GRBX
initial begin
x_counter = 0
y_counter = 0
// Always block to drive drawing, {front|back}-doors, and syncs.
always @(posedge CLK) begin
if(x_counter == 1055)
x_counter = 0
if(y_counter == 627)
y_counter = 0
y_counter = y_counter + 1
x_counter = x_counter + 1
always @(x_counter or y_counter)
if (x_counter&100)
GRBX&=3'b111
else if (x_counter&200)
GRBX&=3'b110
else if (x_counter&300)
GRBX&=3'b101
else if (x_counter&400)
GRBX&=3'b100
else if (x_counter&500)
GRBX&=3'b011
else if (x_counter&600)
GRBX&=3'b010
else if (x_counter&700)
GRBX&=3'b001
GRBX&=3'b000
VGA_R=GRBX[2]
VGA_G=GRBX[3]
VGA_B=GRBX[1]
assign VGA_HS = x_counter & 839 && x_counter & 968
assign VGA_VS = y_counter & 600 && y_counter & 605
这是把里面的main.v改了一下改出来的。令我非常惊喜的是,这个代码真的能动,而且并没有严格要求时钟是多少,也没有试图分频分到60Hz,这里就是考虑了消隐的问题。
后来本来还想用Matlab把一些图片的RGB二值化,生成一系列RGB值放进IP核的ROM里,用 x_counter 和 y_counter 作为地址,输出数据到屏幕,这样就可以显示出图片。
然而。。。CPLD并不能用IP核 T_T,就连ISE的core generator按钮都是灰色的。。。然后心血来潮,用Matlab写了个脚本,生成了四万多行的if。。。强行生成个ROM,就为了显示一张静态图= =||
然而。。。直到现在都还在Synthesize。。。诶都是泪啊。。。
Verilog实现VGA显示控制器
verilogVGA显示一个圆
Verilog编写VGA显示的小游戏
关于VGA的显示原理和Verilog语言实现/学习笔记
Verilog VGA 静态显示图片
数字电路设计之VGA显示条形图的verilog实现
VERILOG代码:VGA显示字符串的解读
没有更多推荐了,我们所过的每个平凡的日常,也许就是连续发生的奇迹
单周期CPU设计实验
小火龙每年都会改一下实验内容,以下内容仅17年的实验。
(1) 掌握单周期CPU数据通路图的构成、原理及其设计方法;
(2) 掌握单周期CPU的实现方法,代码实现方法;
(3) 认识和掌握指令与CPU的关系;
(4) 掌握测试单周期CPU的方法;
(5) 掌握单周期CPU的实现方法。
设计一个单周期CPU,该CPU至少能实现以下指令功能操作。指令与格式如下:
==& 算术运算指令
rd , rs, rt
(说明:以助记符表示,是汇编指令;以代码表示,是机器指令)
功能:rd←rs + rt。reserved为预留部分,即未用,一般填“0”。
rt , rs ,immediate
immediate(16位)
功能:rt←rs + (sign-extend)immediate;immediate符号扩展再参加“加”运算。
rd , rs , rt
功能:rd←rs - rt
==& 逻辑运算指令
rt , rs ,immediate
immediate(16位)
功能:rt←rs | (zero-extend)immediate;immediate做“0”扩展再参加“或”运算。
rd , rs , rt
功能:rd←rs & rt;逻辑与运算。
rd , rs , rt
功能:rd←rs | rt;逻辑或运算。
==&移位指令
功能:rd&-rt&&(zero-extend)sa,左移sa位 ,(zero-extend)sa
==&比较指令
rd, rs, rt
功能:if (rs & rt)
rd =1 else
rd=0, 具体请看表2 ALU运算功能表,带符号
==& 存储器读/写指令
rt ,immediate(rs) 写存储器
immediate(16位)
功能:memory[rs+ (sign-extend)immediate]←rt;immediate符号扩展再相加。即将rt寄存器的内容保存到rs寄存器内容和立即数符号扩展后的数相加作为地址的内存单元中。
rt , immediate(rs) 读存储器
immediate(16位)
功能:rt ← memory[rs + (sign-extend)immediate];immediate符号扩展再相加。
即读取rs寄存器内容和立即数符号扩展后的数相加作为地址的内存单元中的数,然后保存到rt寄存器中。
==& 分支指令
rs,rt,immediate
immediate(16位)
功能:if(rs=rt) pc←pc + 4 + (sign-extend)immediate &&2
else pc ←pc + 4
特别说明:immediate是从PC+4地址开始和转移到的指令之间指令条数。immediate符号扩展之后左移2位再相加。为什么要左移2位?由于跳转到的指令地址肯定是4的倍数(每条指令占4个字节),最低两位是“00”,因此将immediate放进指令码中的时候,是右移了2位的,也就是以上说的“指令之间指令条数”。
rs,rt,immediate
功能:if(rs!=rt) pc←pc + 4 + (sign-extend)immediate &&2
else pc ←pc + 4
特别说明:与beq不同点是,不等时转移,相等时顺序执行。
(13)bgtz
rs,immediate
功能:if(rs&0) pc←pc + 4 + (sign-extend)immediate &&2
else pc ←pc + 4
==&跳转指令
addr[27..2]
功能:pc &-{(pc+4)[31..28],addr[27..2],0,0},无条件跳转。
说明:由于MIPS32的指令代码长度占4个字节,所以指令地址二进制数最低2位均为0,将指令地址放进指令代码中时,可省掉!这样,除了最高6位操作码外,还有26位可用于存放地址,事实上,可存放28位地址了,剩下最高4位由pc+4最高4位拼接上。
==& 停机指令
(15)halt
功能:停机;不改变PC的值,PC保持不变。
单周期CPU指的是一条指令的执行在一个时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个时钟周期完成。电平从低到高变化的瞬间称为时钟上升沿,两个相邻时钟上升沿之间的时间间隔称为一个时钟周期。时钟周期一般也称振荡周期。
CPU在处理指令时,一般需要经过以下几个步骤:
(1) 取指令(IF):根据程序计数器PC中的指令地址,从存储器中取出一条指令,同时,PC根据指令字长度自动递增产生下一条指令所需要的指令地址,但遇到“地址转移”指令时,则控制器把“转移地址”送入PC,当然得到的“地址”需要做些变换才送入PC。
(2) 指令译码(ID):对取指令操作中得到的指令进行分析并译码,确定这条指令需要完成的操作,从而产生相应的操作控制信号,用于驱动执行状态中的各种操作。
(3) 指令执行(EXE):根据指令译码得到的操作控制信号,具体地执行指令动作,然后转移到结果写回状态。
(4) 存储器访问(MEM):所有需要访问存储器的操作都将在这个步骤中执行,该步骤给出存储器的数据地址,把数据写入到存储器中数据地址所指定的存储单元或者从存储器中得到数据地址单元中的数据。
(5) 结果写回(WB):指令执行的结果或者访问存储器中得到的数据写回相应的目的寄存器中。
单周期CPU,是在一个时钟周期内完成这五个阶段的处理。
单周期CPU指令处理过程
MIPS指令的三种格式:
op:为操作码;
rs:只读。为第1个源操作数寄存器,寄存器地址(编号)是,00~1F;
rt:可读可写。为第2个源操作数寄存器,或目的操作数寄存器,寄存器地址(同上);
rd:只写。为目的操作数寄存器,寄存器地址(同上);
sa:为位移量(shift amt),移位指令用于指定移多少位;
funct:为功能码,在寄存器类型指令中(R类型)用来指定指令的功能与操作码配合使用;
immediate:为16位立即数,用作无符号的逻辑操作数、有符号的算术操作数、数据加载(Load)/数据保存(Store)指令的数据地址字节偏移量和分支指令中相对程序计数器(PC)的有符号偏移量;
address:为地址。
单周期CPU数据通路和控制线路图
图2是一个简单的基本上能够在单周期CPU上完成所要求设计的指令功能的数据通路和必要的控制线路图。其中指令和数据各存储在不同存储器中,即有指令存储器和数据存储器。访问存储器时,先给出内存地址,然后由读或写信号控制操作。对于寄存器组,先给出寄存器地址,读操作时,输出端就直接输出相应数据;而在写操作时,在 WE使能信号为1时,在时钟边沿触发将数据写入寄存器。图中控制信号作用如表1所示,表2是ALU运算功能表。
表1 控制信号的作用
相关部件及引脚说明:
Instruction Memory:指令存储器,
Iaddr,指令存储器地址输入端口
IDataIn,指令存储器数据输入端口(指令代码输入端口)
IDataOut,指令存储器数据输出端口(指令代码输出端口)
RW,指令存储器读写控制信号,为0写,为1读
Data Memory:数据存储器,
Daddr,数据存储器地址输入端口
DataIn,数据存储器数据输入端口
DataOut,数据存储器数据输出端口
/RD,数据存储器读控制信号,为0读
/WR,数据存储器写控制信号,为0写
Register File:寄存器组
Read Reg1,rs寄存器地址输入端口
Read Reg2,rt寄存器地址输入端口
Write Reg,将数据写入的寄存器端口,其地址来源rt或rd字段
Write Data,写入寄存器的数据输入端口
Read Data1,rs寄存器数据输出端口
Read Data2,rt寄存器数据输出端口
WE,写使能信号,为1时,在时钟边沿触发写入
算术逻辑单元
result,ALU运算结果
zero,运算结果标志,结果为0,则zero=1;否则zero=0
sign,运算结果标志,结果最高位为0,则sign=0,正数;否则,sign=1,负数
表2 ALU运算功能表
表3 控制信号与指令的关系表
附:z为zero,s为sign
表4 测试程序代码
表5 寄存器组值的变化
表6 Basy3板显示内容
附:一个格子有两个数据,上面的为按下按键时钟上升沿后的显示,下面的为松开按键时钟下降沿的显示,上升沿和下降沿数据的改变说明寄存器的写入是下降沿触发的,而读数不需要时钟,所以到下降沿后数据会改变。
电脑一台,Xilinx Vivado 软件一套,Basys3板一块。
实验过程与结果
1.实验过程
单周期CPU的思想就是一个周期之内完成一条指令,在时钟上升沿完成PC的改变,下降沿完成寄存器组和RAM的数据保存。每条指令有它自己的数据通路。根据数据通路图的情况,可以对每一个控制端口列出对应的情况,于是便有上面的表3。
addi、ori的数据通路图
add、sub、and、or、slt的数据通路图
sw、lw数据通路图
sll的数据通路图
j的数据通路图
beq、bne、bgtz的数据通路图
上图是我对单周期CPU写的模块,对应数据通路图每个部分都有实现。二选择器,三选择器没有并入ALU和PC,也是分别模块化。
数据通路图的作用,可以在写ControlUnit时体现出来,使用case会写出200多行,既不美观,也不容易找出当中的错误,通过控制信号表可以节省代码量,更容易找出设计当中的错误。
上图是消抖模块,设置SAMPLE_TIME为20ns,每一纳秒记录一次电平,只有超过20ns不变,才认为这是一次完整的输入。
这是指令分割模块,方便后续的操作,不用每次都要手动分割。在数据通路上sa是5位数,然而传进去是32位,因此我在数据分割的时候,顺便把sa的位数扩展了,方便sll的操作。
这是位数扩展模块,若ExtSel为0,则对立即数进行补0扩展,否则对立即数进行符号扩展。
这是寄存器组模块,这是最重要的模块之一,读取数据不需要时钟,写数据需要时钟下降沿。但老师给的代码有个问题,就是reset后,PC为0时没有时钟下降沿保存<span class="MathJax" id="MathJax-Element-3-Frame" tabindex="0" data-mathml="1&#xFF0C;&#x518D;&#x6309;&#x6309;&#x952E;PC&#x5C31;&#x662F;0x04&#x4E86;&#xFF0C;&#x56E0;&#x6B64;reset&#x540E;&#x9700;&#x8981;&#x81EA;&#x5DF1;&#x8865;&#x5145;&#x5199;&#x5BC4;&#x5B58;&#x5668;&#xFF0C;&#x4E0D;&#x7136;" role="presentation" style="position:">1,再按按键PC就是0x04了,因此reset后需要自己补充写寄存器,不然1,再按按键PC就是0x04了,因此reset后需要自己补充写寄存器,不然1没保存,后面全错。
这个是ROM代码的一部分,老师给的代码是0的时候读,但表1是1的时候读,这部分要把读信号初始化为1。在这个实验中,PC,ROM是两个初始化的部分,没有初始化,PC不会改变,而且ROM也没有读取读取数据,造成后面数据出现X和Z的现象。
没有更多推荐了,基于basys3 板子的verilog开发这个东西的目的就是测试反应速度,分成了4个状态:idle:_verilog吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:3,915贴子:
基于basys3 板子的verilog开发这个东西的目的就是收藏
基于basys3 板子的verilog开发这个东西的目的就是测试反应速度,分成了4个状态:idle: 初始状态,灯全灭,led全灭;preparation:倒计时3、2、1、0,led全亮,再全灭开始计时,Counting:计时,Result 反馈结果,如果超过10秒没有按下测试按钮 stopbutton, 显示fail,按下test button 开始测试, resetbutton 重置测试,回到idle状态,精确度是0.001秒,要求在最左边的灯显示小数点比如1.233麻烦有能力者私聊帮我改下代码,我已经写了90%
楼主当Lyle不上贴吧的喽
ANU???3213????
那百分之十有啥问题么
登录百度帐号

我要回帖

更多关于 数字时钟verilog&#39;设计代码 的文章

 

随机推荐