经过上一章的了解

组合电路的最大优势就是能直接根据输入进行输出

但其也有很多的缺点:占大量的电路资源,功耗较大,电路固定…

这一次我们来讲基本的时序电路,写一个简单的时序控制电路

再在此基础上将之前的组合电路乘法器改成时序电路


首先我们要来了解下安路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:简单的时序电路相关推荐

  1. FPGA—多路选择器(简单逻辑组合电路)

    摘要:多路选择器是数据选择器的别称.在多路数据传送过程中,能够根据需要将其中任意一路选出来的电路,叫做数据选择器,也称多路选择器或多路开关.在选择变量控制下,从多路数据输入中某一路数据送至输出端.对于 ...

  2. verilog学习记(时序电路)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 其实,在我看来不管学什么语言,必须去实践.其实,经过自己不断的打磨和练习,才能真正从错误中得到 ...

  3. FPGA学习笔记【FPGA原理与结构】

    注意:本篇内容根据<FPGA原理和结构>([日]天野英晴 著 赵谦 译)一书整理,作者也是初学者,有错漏请见谅 基础知识 FPGA即现场可编程门阵列(Field Programmable ...

  4. FPGA学习笔记(1)简单的时序逻辑电路——流水灯

    FPGA学习笔记(1)简单的时序逻辑电路--流水灯 编程语言为Verilog HDL 原理 (1)设计一个计数器,使开发板上的4个LED状态每500ms翻转一次.开发板上的晶振输出时钟频率为50MHz ...

  5. [从零开始学习FPGA编程-29]:进阶篇 - 基本时序电路-时序电路的两大基本特征(状态记忆与时钟触发)

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

  6. [从零开始学习FPGA编程-30]:进阶篇 - 基本时序电路-锁存器(Verilog语言)

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址: 目录 前言: 第1章 什么是锁存器 1.1 什么是时序电路的两大特征

  7. 关于fpga的语言逻辑异步电路同步时序电路终于读懂了

    原文链接: http://m.elecfans.com/article/575270.html 从大学时代第一次接触FPGA至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表.抢 ...

  8. (29)FPGA面试题时序电路延时

    1.1 FPGA面试题时序电路延时 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题时序电路延时: 5)结束语. 1.1.2 本节引言 "不积跬步 ...

  9. EDA实验(Quartus Ⅱ+fpga) (二)---时序电路的设计-模可变计数器设计

    前言: 本文主要介绍了EDA原理与应用这门课程的相关实验及代码.使用的软件是Quartus Ⅱ,该实验使用fpga芯片为cycloneⅤ 5CSEMA5F31C6. (一)实验目的 (1)进一步熟悉E ...

最新文章

  1. C# Combobox联动
  2. HDU1061-Rightmost Digit(高速功率模)
  3. 计算机网络原理笔记-三次握手
  4. scrapy爬虫框架windows下的安装问题
  5. 线性代数五之高斯消元——[SDOI2010]外星千足虫,[HNOI2013]游走,[HNOI2011]XOR和路径,[hdu 4035]Maze
  6. layui入门基础:资源汇总
  7. SpringMVC 配置文件实现(Tomcat)
  8. 让input支持 ctrl v上传粘贴图片? 让input支持QQ截图或剪切板中的图像数据(Java实现保存)...
  9. 10、python图像识别库tesseract下载及配置
  10. 五、OpenStack安装Nova
  11. 项目管理-Visio可以绘制甘特图编辑操作极方便
  12. vivado 开发教程(二) 使用IP集成器
  13. 基于产生式系统方法实现动物识别系统
  14. 企业运维实践-Nginx使用geoip2模块并利用MaxMind的GeoIP2数据库实现处理不同国家或城市的访问最佳实践指南...
  15. Mysql计算同比环比(超详细)
  16. 使用J-Flash烧录固件
  17. 用php语言说句情话,50句最美情话,套路我都懂,只是舍不得对你用
  18. keras搬砖系列-残差网络的实现
  19. WMD:基于词向量的文档相似度计算
  20. 开发手机蓝牙硬件APP如何实现蓝牙自动重连机制

热门文章

  1. matlab过圆心的直线,iOS计算过圆心直线与圆的交点
  2. java获取局域网IP
  3. leetcode有效的字母异位词--哈希表与Counter(两种方法天差地别)
  4. python缩进格式错误修改病句_python缩进错误,求教。
  5. Java代码生成器codeMan重磅更新——添加权限管理模块生成功能,实现动态菜单和按钮级别的权限控制
  6. 计算机语言一通百通,15条关于一通百通的经典语句
  7. 关爱孤寡老人 用心陪伴 让老人安度幸福晚年
  8. Win XP 内存优化
  9. 7大热门领域,天天高收益,入门自媒体必看
  10. SEO如何获得大量资源