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/分频器/激励写法的更多相关文章

  1. angular.js写法不规范导致错误

    以下写法:没有明确指定module和controller,写法不规范. 更改angular.js版本会出bug. <html ng-app> <head> <title& ...

  2. 0-1背包 VIOJ1025

    P1025小飞侠的游园方案 请 登录 后递交 标签:[显示标签] 描述 菜虫:你的题目是--我们的情报组织探听到敌人的重要将领--小飞侠星期天会邀他的灵儿妹妹到公园去玩.公园里有很多娱乐项目,可并不是 ...

  3. 前端模块化IIFE,commonjs,AMD,UMD,ES6 Module规范超详细讲解

    目录 为什么前端需要模块化 什么是模块 是什么IIFE 举个栗子 模块化标准 Commonjs 特征 IIFE中的例子用commonjs实现 AMD和RequireJS 如何定义一个模块 如何在入口文 ...

  4. 02-FPGA设计流程介绍——小梅哥FPGA设计思想与验证方法视频教程配套文档

    芯航线——普利斯队长精心奉献 课程目标: 1.了解并学会FPGA开发设计的整体流程 2.设计一个二选一选择器并进行功能仿真.时序仿真以及板级验证 实验平台:芯航线FPGA开发板.杜邦线 实验内容: 良 ...

  5. 小梅哥FPGA数字逻辑设计教程——基于线性序列机的TLC5620型DAC驱动设计

    基于线性序列机的TLC5620型DAC驱动设计 目录 TLC5620型DAC芯片概述:    2 TLC5620型DAC芯片引脚说明:    2 TLC5620型DAC芯片详细介绍:    3 TLC ...

  6. Verilog语法基础讲解之参数化设计

    Verilog语法基础讲解之参数化设计   在Verilog语法中,可以实现参数化设计.所谓参数化设计,就是在一个功能模块中,对于一个常量,其值在不同的应用场合需要设置为不同的置,则将此值在设计时使用 ...

  7. Magento控制器

    提到模型-视图-控制器这种MVC架构,要追溯到Smalltalk编程语言和Xerox Parc.从那个时候开始,就有许多系统将自己描述为MVC架构.这些系统虽然在某些地方有细微差别,但都实现了数据层, ...

  8. js实现reqire中的amd,cmd功能

    js实现reqire中的amd,cmd功能 ,大概实现了 路径和模块 引入等重要功能. 本帖属于原创,转载请出名出处. <!DOCTYPE html PUBLIC "-//W3C//D ...

  9. P1004 方格取数-洛谷luogu-dp动态规划

    题目描述 设有N \times NN×N的方格图(N \le 9)(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字00.如下图所示(见样例): A 0 0 0 0 0 0 0 0 ...

  10. ES6模块化操作

    在ES5中我们要进行模块化操作需要引入第三方类库,随着前后端分离,前端的业务日渐复杂,ES6为我们增加了模块化操作.模块化操作主要包括两个方面. export :负责进行模块化,也是模块的输出. im ...

随机推荐

  1. libGDX游戏开发之修改游戏帧数FPS(十三)

    libGDX游戏开发之修改游戏帧数FPS(十三) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm-国内用libgdx比较少,多数情况需要去官网 ...

  2. 海量监控数据处理如何做,看华为云SRE案例分享

    摘要:openGemini的设计和优化都是根据时序数据特点而来,在面对海量运维监控数据处理需求时,openGemini显然更加有针对性. IT运维诞生于最早的信息化时代.在信息化时代,企业的信息化系统 ...

  3. 一文掌握GaussDB(DWS) SQL进阶技能:全文检索

    摘要:本文简要介绍了GaussDB(DWS)全文检索的原理和使用方法. 全文检索(Text search)顾名思义,就是在给定的文档中查找指定模式(pattern)的过程.GaussDB(DWS)支持 ...

  4. GIS常用npm包:GeoJSON文件合并与元素过滤\属性过滤\图形合并

    GeoJSON文件合并 普通的geoJSON文件合并,只需geojson-merge插件就够了,https://www.npmjs.com/package/@mapbox/geojson-merge ...

  5. 讲透学烂二叉树(五):分支平衡—AVL树与红黑树伸展树自平衡

    简叙二叉树 二叉树的最大优点的就是查找效率高,在二叉排序树中查找一个结点的平均时间复杂度是O(log₂N): 在<讲透学烂二叉树(二):树与二叉/搜索/平衡等树的概念与特征>提到 二叉排序 ...

  6. centos8 新增ssh自定义端口与屏蔽默认22端口。

    第一步:修改SSH配置文件(注意是sshd_config而不是ssh_config,多了个d) vim /etc/ssh/sshd_config找到"#Port 22",这一行直接 ...

  7. ​iOS上架审核宝典:如何避免被拒一次提交成功

    Xcode 摘要:本文整理了iOS上架需要注意的事项,以帮助从事iOS开发和App运营的朋友们避免审核被拒的困扰.通过遵循这些指南,我们可以在一次提交中成功地将应用上架,并节省宝贵的时间和精力. 引言 ...

  8. Solon2 开发之插件,四、插件热插拔管理机制(H-Spi)

    插件热插拔管理机制,简称:H-Spi.是框架提供的生产时用的另一种高级扩展方案.相对E-Spi,H-Spi 更侧重隔离.热插热拔.及管理性. 应用时,是以一个业务模块为单位进行开发,且封装为一个独立插 ...

  9. Linux 检查应用不在现就重启

    每5分钟检查一次,如果不在线就重启 #!/bin/bash count=`ps axu | grep kafka_2.11-1.0.0|grep -v grep|wc -l` echo "p ...

  10. ME51N 采购申请屏幕增强仅显示字段

    1.业务需求 通过委外工单生成的采购申请,需要将自定义"图号"字段显示在采购申请中,且只用于显示即可 2.增强实现 增强表EBAN的结构CI_EBANDB 增强点CMOD:MERE ...