FPGA学习-8:简单的时序电路
经过上一章的了解
组合电路的最大优势就是能直接根据输入进行输出
但其也有很多的缺点:占大量的电路资源,功耗较大,电路固定…
这一次我们来讲基本的时序电路,写一个简单的时序控制电路
再在此基础上将之前的组合电路乘法器改成时序电路
首先我们要来了解下安路FPGA的时钟信号
安路FPGA的外部24Mhz晶振信号由k14号引脚提供
使用 “IO Constraint” 引脚映射工具
将veilog模块的某一输入端口映射到k14引脚上即可得到24Mhz的时钟信号
先来设计个简单的 “可变分频器”
代码如下:
module Start(input clk,input button, output[2:0] led
);reg[31:0] pll,cnt;
reg[2:0] out;assign led = ~out;initial beginpll = 32'd24000000;cnt = 32'd0; out = 3'b001;
endalways @(posedge clk )beginif(cnt <= pll) begincnt = cnt + 32'd1; end else begin cnt = 32'd0; out = out << 1; if(out == 3'd0)begin out = 3'b001;end end
endinteger i=1;always @(posedge button)begincase(i)1:begin i=2; pll=32'd12000000;end 2:begin i=3; pll=32'd6000000;end 3:begin i=1; pll=32'd24000000;end endcaseend endmodule
引脚映射如下:
正常编译再烧录进tang perimer里,led就会交错闪烁
按下user按键,闪烁的频率就会发生改变
这最简单的分频器设计
接下来我们再尝试将上一节中的组合电路单周期乘法器改造
变成时序电路多周期乘法器
额,就不要说什么多此一举了
我们的目的是学习
代码如下
module Mul(input clk, //时钟信号input rst, //复位信号output reg flag,//是否完成信号input[7:0] Ai, input[7:0] Bi, output reg[15:0] result
); reg[15:0] bi;initial beginbi = {8'd0,Bi};flag = 0; result= 0;
end integer i=0;always @(posedge clk or posedge rst) beginif(rst == 1)beginbi = Bi;flag = 0; result = 0; i=0;end else if(flag == 0)begin result = result + (Ai[i] ? bi:0);bi = bi << 1; i = i + 1; if(i>=8)begin flag = 1;end end
end endmodule
可以看到时序逻辑会比组合逻辑复杂得多
但是也正是因为时序电路的“记忆性”
让cpu这类复杂的运算电路得以实现
FPGA学习-8:简单的时序电路相关推荐
- FPGA—多路选择器(简单逻辑组合电路)
摘要:多路选择器是数据选择器的别称.在多路数据传送过程中,能够根据需要将其中任意一路选出来的电路,叫做数据选择器,也称多路选择器或多路开关.在选择变量控制下,从多路数据输入中某一路数据送至输出端.对于 ...
- verilog学习记(时序电路)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 其实,在我看来不管学什么语言,必须去实践.其实,经过自己不断的打磨和练习,才能真正从错误中得到 ...
- FPGA学习笔记【FPGA原理与结构】
注意:本篇内容根据<FPGA原理和结构>([日]天野英晴 著 赵谦 译)一书整理,作者也是初学者,有错漏请见谅 基础知识 FPGA即现场可编程门阵列(Field Programmable ...
- FPGA学习笔记(1)简单的时序逻辑电路——流水灯
FPGA学习笔记(1)简单的时序逻辑电路--流水灯 编程语言为Verilog HDL 原理 (1)设计一个计数器,使开发板上的4个LED状态每500ms翻转一次.开发板上的晶振输出时钟频率为50MHz ...
- [从零开始学习FPGA编程-29]:进阶篇 - 基本时序电路-时序电路的两大基本特征(状态记忆与时钟触发)
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...
- [从零开始学习FPGA编程-30]:进阶篇 - 基本时序电路-锁存器(Verilog语言)
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址: 目录 前言: 第1章 什么是锁存器 1.1 什么是时序电路的两大特征
- 关于fpga的语言逻辑异步电路同步时序电路终于读懂了
原文链接: http://m.elecfans.com/article/575270.html 从大学时代第一次接触FPGA至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表.抢 ...
- (29)FPGA面试题时序电路延时
1.1 FPGA面试题时序电路延时 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题时序电路延时: 5)结束语. 1.1.2 本节引言 "不积跬步 ...
- EDA实验(Quartus Ⅱ+fpga) (二)---时序电路的设计-模可变计数器设计
前言: 本文主要介绍了EDA原理与应用这门课程的相关实验及代码.使用的软件是Quartus Ⅱ,该实验使用fpga芯片为cycloneⅤ 5CSEMA5F31C6. (一)实验目的 (1)进一步熟悉E ...
最新文章
- C# Combobox联动
- HDU1061-Rightmost Digit(高速功率模)
- 计算机网络原理笔记-三次握手
- scrapy爬虫框架windows下的安装问题
- 线性代数五之高斯消元——[SDOI2010]外星千足虫,[HNOI2013]游走,[HNOI2011]XOR和路径,[hdu 4035]Maze
- layui入门基础:资源汇总
- SpringMVC 配置文件实现(Tomcat)
- 让input支持 ctrl v上传粘贴图片? 让input支持QQ截图或剪切板中的图像数据(Java实现保存)...
- 10、python图像识别库tesseract下载及配置
- 五、OpenStack安装Nova
- 项目管理-Visio可以绘制甘特图编辑操作极方便
- vivado 开发教程(二) 使用IP集成器
- 基于产生式系统方法实现动物识别系统
- 企业运维实践-Nginx使用geoip2模块并利用MaxMind的GeoIP2数据库实现处理不同国家或城市的访问最佳实践指南...
- Mysql计算同比环比(超详细)
- 使用J-Flash烧录固件
- 用php语言说句情话,50句最美情话,套路我都懂,只是舍不得对你用
- keras搬砖系列-残差网络的实现
- WMD:基于词向量的文档相似度计算
- 开发手机蓝牙硬件APP如何实现蓝牙自动重连机制