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 ...
最新文章
- Thrift协议与传输选择
- MyBatis-16MyBatis动态SQL之【支持多种数据库】
- 你应该更新的Java知识之常用程序库
- java实现8、10、16、2进制之间的相互转换(简单易懂实用快速)
- TypeError: ‘int‘ object is not callable
- linux 系统arp检测工具,linux网络常用诊断工具
- pyspider爬虫框架
- linux es数据库 head,centos7安装Elasticsearch及Es-head插件详细教程(图文)
- 【Linux】快速入门gdb调试工具
- 40家重污染行业上市公司进“黑名单”
- 在线的棋牌类网络游戏java服务端实现
- FineBI中tomcat服务器部署
- oracle给表更名,Oracle重命名表
- 安卓打造自己的日历控件
- 32位服务器系统安装教程,服务器系统数据库安装教程
- Python常用内置函数enumerate()详细用法介绍
- 通信基础篇小项目-----简单网络画板的的实现
- Java接入支付宝支付(沙箱)
- Android 版本 相关参数修改(SpreadTrum)
- tensorflow 相关书籍推荐