01-module/分频器/激励写法
1.module
- module有出入接口,输出接口
- module有时钟和复位
// input
clock;
rest_n; // n表示低电平复位
//output
o_data;
module module_a(
// module是关键字表示声明一个模块
// module module名
// module .. endmodule是一对
// module module_name(模块的输入输出列表);
// 输入只能是wire变量,只有线才能连入module
// 输出可以是wire类型也可以是reg类型,一般是reg变量
// 不写位宽,默认是1bit位宽的
input wire clk,
input wire rest_n,
output reg [7:0] o_data // 8bit数据
);
endmodule
module Lut_m(
input wire sclk,
input wire rst_n,
input wire [9:0] i_data,
input wire [15:0] i_sin,
output reg [15:0] o_cos,
output reg o_div_clk,
output reg [9:0] div_clk,
// module中包含子module
// 嵌套子模块,就是例化,首先要先将子模块写成单独的模块
// 例化:先写模块的名字 例化的名字
sub_m u_sub_m (
// 如何引入接口
//用点的方式先写模块的接口(接入的接口)
.sclk (sclk),
.rst_n (rst_n),
.i_data (i_data),
.i_sin (i_sin),
.o_cos (o_cos),
.o_data (o_data)
);
sub_n u_sub_n(
.sclk (sclk),
.rst_n (rst_n),
.i_data (i_data),
.i_sin (i_sin),
.o_data (o_data)
);
);
endmodule
2.分频器
// 输入50MHz,二分频
module div_clk(
input wire sclk,
input wire rst_n,
output reg div_clk_o
);
// 分频器,需要一个计数器,二分频,需要记录01状态,1bit
// div_cnt就是一个计数器
// 计数器为0的时候,输出为低,计数器为1的时候,输出为高
reg div_cnt;
//寄存器使用always语句进行赋值的
// 这是一种异步复位的写法
// 在时钟上升沿的时候触发逻辑
// 复位使用作用下实现复位逻辑
// 计数器逻辑
always@(posedge sclk or negedge rst_n)
begin
if(rst_n == 1'b0)
begin
div_cnt <= 1'b0;
end
else begin
div_cnt <= div_cnt + 1'b0;
end
end
// 产生div_sclk_o
always@(posedge sclk or negedge rst_n) begin
if(rst == 1'b0) begin
div_cnt <= 1'b0;
end
else if(div_cnt == 0) begin
div_clk_o <= 1;
end
else
div_clk_o <= 0;
end
endmodule
- div_cnt = 0的时候,给输出赋值1,下一个时钟上升沿就可以输出1
- div_cnt = 1的时候,给输出赋值0,下一个时钟上升沿就可以输出0
在时序电路里,一般系统时钟都是高频的,不同外设对时钟频率的要求不同,所以需要通过分频来获得相应的时钟频率,一般都是将高频的时钟转换为低频的时钟。最简单的分频就是2分频,也就是把时钟频率减半,输出时钟和输入时钟上升沿对齐,波形图是这样的:

有遇到需要奇数分频的时候,这时候上升沿和下降沿都需要用到,3分频波形图是这样的:

上面两张图都是50%占空比的,有的时候我们只需要用输出时钟的上升沿,不需要考虑下降沿,这样的话我们的输出时钟只需要是单脉冲的就可以了,设计的时候会简单很多,单脉冲的3分频波形图是这样的:

8分频 -- 4周期反转一次
4分频 -- 2周期反转一次
3分频 -- 1.5周期/3周期
5分频 -- 2.5周期/5周期
7分频 -- 3.5周期/7周期
后期会补充分频器和计数器的书写方式
01-module/分频器/激励写法的更多相关文章
- angular.js写法不规范导致错误
以下写法:没有明确指定module和controller,写法不规范. 更改angular.js版本会出bug. <html ng-app> <head> <title& ...
- 0-1背包 VIOJ1025
P1025小飞侠的游园方案 请 登录 后递交 标签:[显示标签] 描述 菜虫:你的题目是--我们的情报组织探听到敌人的重要将领--小飞侠星期天会邀他的灵儿妹妹到公园去玩.公园里有很多娱乐项目,可并不是 ...
- 前端模块化IIFE,commonjs,AMD,UMD,ES6 Module规范超详细讲解
目录 为什么前端需要模块化 什么是模块 是什么IIFE 举个栗子 模块化标准 Commonjs 特征 IIFE中的例子用commonjs实现 AMD和RequireJS 如何定义一个模块 如何在入口文 ...
- 02-FPGA设计流程介绍——小梅哥FPGA设计思想与验证方法视频教程配套文档
芯航线——普利斯队长精心奉献 课程目标: 1.了解并学会FPGA开发设计的整体流程 2.设计一个二选一选择器并进行功能仿真.时序仿真以及板级验证 实验平台:芯航线FPGA开发板.杜邦线 实验内容: 良 ...
- 小梅哥FPGA数字逻辑设计教程——基于线性序列机的TLC5620型DAC驱动设计
基于线性序列机的TLC5620型DAC驱动设计 目录 TLC5620型DAC芯片概述: 2 TLC5620型DAC芯片引脚说明: 2 TLC5620型DAC芯片详细介绍: 3 TLC ...
- Verilog语法基础讲解之参数化设计
Verilog语法基础讲解之参数化设计 在Verilog语法中,可以实现参数化设计.所谓参数化设计,就是在一个功能模块中,对于一个常量,其值在不同的应用场合需要设置为不同的置,则将此值在设计时使用 ...
- Magento控制器
提到模型-视图-控制器这种MVC架构,要追溯到Smalltalk编程语言和Xerox Parc.从那个时候开始,就有许多系统将自己描述为MVC架构.这些系统虽然在某些地方有细微差别,但都实现了数据层, ...
- js实现reqire中的amd,cmd功能
js实现reqire中的amd,cmd功能 ,大概实现了 路径和模块 引入等重要功能. 本帖属于原创,转载请出名出处. <!DOCTYPE html PUBLIC "-//W3C//D ...
- P1004 方格取数-洛谷luogu-dp动态规划
题目描述 设有N \times NN×N的方格图(N \le 9)(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字00.如下图所示(见样例): A 0 0 0 0 0 0 0 0 ...
- ES6模块化操作
在ES5中我们要进行模块化操作需要引入第三方类库,随着前后端分离,前端的业务日渐复杂,ES6为我们增加了模块化操作.模块化操作主要包括两个方面. export :负责进行模块化,也是模块的输出. im ...
随机推荐
- RIPEMD加密算法:原理、应用与安全性
一.引言 在信息时代,数据安全愈发受到重视,加密算法作为保障信息安全的关键技术,其性能和安全性备受关注.RIPEMD(RACE Integrity Primitives Evaluation Mess ...
- 华企盾DSC在苹果电脑上申请审批没有通知
由于系统通知这里没有允许DSC通知,开启后即可.系统偏好设置-通知与专注模式-通知
- java断言机制(assert)
java断言机制(assert) 概述 断言使用的时候不是很多,测试时会使用,springboot中也有使用,总的来说断言还是要慎重. 在Java中,同样也有assert关键字,表示断言 在Java中 ...
- 简单几行实现sliver上线提醒
准备魔改sliver去掉一些特征什么的,这里记录一下最简单实现上线消息通过企业微信机器人提醒的方式,这很简单也有很多不足还需要接着改的 protobuf中对消息Beacon和Session的定义如下, ...
- libGDX游戏开发之Sprite、Texture和TextureRegion绘制旋转、反转(九)
libGDX游戏开发之Sprite.Texture和TextureRegion绘制反转(九) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm- ...
- 从Bitcask存储模型谈超轻量级KV系统设计与实现
Bitcask介绍 Bitcask是一种"基于日志结构的哈希表"(A Log-Structured Hash Table for Fast Key/Value Data) Bitc ...
- openGemini v0.2.0版本正式发布:5大特性全面增强
摘要:openGemini是华为云面向物联网和运维监控场景开源的一款云原生分布式时序数据库,兼容InfluxDB API,具有高性能.高并发.高扩展等特点. openGemini是华为云面向物联网和运 ...
- APP搜索如何又快又准?
摘要:搜索的概念深入人心,但做好一个体验绝佳的搜索服务并不是一件容易的事. 本文分享自华为云社区<云搜索服务在APP搜索场景的应用>,作者:写代码的贺大师 搜索无处不在,尤其是在移动互联的 ...
- 华为云GaussDB:发挥生态优势,培养应用型DBA
摘要:GaussDB首要的任务是解决华为的业务连续性的需求,同时也是要确保使用GaussDB的客户的业务能够连续,所以我们坚持战略投入,坚持从每一行代码,坚持从生态开始来构建整个数据库体系. 本文分享 ...
- 云图说|初识ModelArts开发者生态社区——AI Gallery
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: AI Galle ...