【Verilog零基础入门-边看边练】学习笔记——第七讲 时序逻辑代码设计和仿真(三角波发生器)(一)
一、三角波发生器逻辑设计
所需软件
Verilog编程软件:Lattice Diamond(3.11.0.396.4_Diamond_x64)
Verilog仿真软件:ModelSim SE-64 10.2c(modelsim-win64-10.2c-se)
方法:用always语句块、组合逻辑实现三角波发生器逻辑设计
符号图:
Verilog代码:
Part1:Test14_tri_gen.v文件(Verilog工程文件)
//2020-06-06
//最简单的状态机(三角波发生器)
module Test14_tri_gen(clk,res,d_out );input clk;
input res;
output[8:0] d_out; //输出结果(299需要占用9bit)reg state; //定义状态机寄存器,因只有两个状态,所以占用1bit就足够了
reg[8:0] d_out; //299需要占用9bitalways@(posedge clk or negedge res)if(~res) begin //如果复位为低state<=0;d_out<=0; //状态机进入零状态,d_out也为0endelse begincase(state) //状态机0: begin d_out<=d_out+1; //上升if(d_out==299) begin //跳转条件(计数器+1,加到299,跳转到1状态)state<=1; //1状态endend1: begin d_out<=d_out-1; //下降if(d_out==1) begin //跳转条件(计数器-1,减到1,跳转到0状态)state<=0; //0状态endendendcaseend
endmodule
Part2:Test14_tri_gen_tb.v文件(Verilog仿真文件)
//2022-06-06
//最简单的状态机(三角波发生器)-testbench of Test14_tri_gen
`timescale 1ns/10ps
module Test14_tri_gen_tb;
reg clk_in,res_in;
wire[8:0] d_out;Test14_tri_gen U1(.clk(clk_in), //异名例化.res(res_in),.d_out() );initial beginclk_in<=0;res_in<=0;#17 res_in<=1;#8000 $stop; //系统时钟周期为10ns,实现1-300、300-1计数,遍历运行一遍需要6000nsendalways #5 clk_in<=~clk_in; //设置系统时钟周期为10nsendmodule
仿真波形:
注意事项
1、因本状态机只有两个状态,所以占用1bit就足够了;
2、因本三角波的取值范围为1-300,故占用9bit即可满足计数;
3、因设定了系统时钟周期为10ns,故实现1-300、300-1计数,遍历运行一遍需要6000ns。
原教学视频链接如下
Verilog零基础入门_哔哩哔哩_bilibili
【Verilog零基础入门-边看边练】学习笔记——第七讲 时序逻辑代码设计和仿真(三角波发生器)(一)相关推荐
- 【Verilog零基础入门-边看边练】学习笔记——第三讲 组合逻辑代码设计和仿真(补码转换和七段译码逻辑设计)(二)
二.七段译码逻辑设计 所需软件 Verilog编程软件:Lattice Diamond(3.11.0.396.4_Diamond_x64) Verilog仿真软件:ModelSim SE-64 10. ...
- Python零基础入门(三)——函数[学习笔记]
目录: 一.函数: 1.内置函数 2.定义函数 二.函数参数: 1.必选参数 2.默认参数 3.可变参数/任意参数 4.关键字参数 三.return语句 四.函数封装 1.导入整个模块 2.导入特定的 ...
- 怎么安装python_零基础入门必看篇:浅析python,PyCharm,Anaconda三者之间关系
今天为大家带来的内容是:零基础入门必看篇:浅析python ,PyCharm,Anaconda三者之间关系 众所周知,Python是一种跨平台的计算机程序设计语言,简单来说,python就是类似于C, ...
- 《零基础学JavaScript(全彩版)》学习笔记
<零基础学JavaScript(全彩版)>学习笔记 二〇一九年二月九日星期六0时9分 前期: 刚刚学完<零基础学HTML5+CSS3(全彩版)>,准备开始学习JavaScrip ...
- 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-对极几何和对极约束、本质矩阵、基础矩阵
专栏系列文章如下: 专栏汇总 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLA ...
- 2022年最新最全的Java零基础入门,零基础入门springboot,MySQL的学习
今天就来开始带领大家零基础入门Java开发 写在前面 为什么学习Java Java用途很广泛,如下图所示,Java可以做很多工作 JAVA语言发展史 2019年3月,JDK12版本发布. 2019年9 ...
- 零基础自学python看什么书-学习Python可以看书籍学习吗?老男孩Python入门课程
在人工智能和数据分析的带领之下,推动了互联网市场的发展,也推动了python语言的发展,让它成为了市场上炙手可热的编程语言. 而python具有入门简单.就业范围广泛.薪资水平高诸多优势,越来越多的人 ...
- Python 零基础入门到实战(一)笔记:内置对象、浅拷贝、深拷贝、计算圆面积、凯撒密码、英文大小写转换、输入国家打印出国家名和首都、输入数字英文输出、统计句子中的字母数量、猜随机数
Python入门到实战(一) 为什么写这篇文章 Part 1 入门部分 什么是编程语言? Python的优势 目前应用 特点 Part 2 6种内置对象 1 整数.浮点数 2 字符串 3 列表 4 元 ...
- Android入门到精通|安卓/Android开发零基础系列Ⅱ【职坐标】-学习笔记(1)-- 常用控件及资源介绍
前言 为了巩固Android基础知识,回顾一下学习内容,才有此学习笔记. IDE Androdi Studio 4 + Genymotion 创建项目 修改项目的 build.gradle,添加国内镜 ...
- css 选择器 第一个class_【零基础上手JavaWeb】CSS小白学习笔记
这是为大家面试定制的<零基础上手JavaWeb>系列.涵盖了JavaWeb基础内容,结合展示的案例,带你由浅入深掌握JavaWeb核心内容.非常适合小白入手的哦,一起加油吧~~ 1.CSS ...
最新文章
- 矩阵的终极分解-奇异值分解 SVD
- python类中方法的执行顺序-浅谈Python的方法解析顺序(MRO)
- python 文件处理1:将某一目录下的文件合并
- 成功在两台电脑上安装了spark集群,mark下
- 阿里云服务器如何创建快照备份数据
- CMake使用介绍(1)
- html实现多窗口同时显示,如何使webstorm同时显示多个窗口?
- myline java线段类,2008010 编写一个线段类 MyLine 联合开发网 - pudn.com
- 多媒体计算机辅助英语教学,多媒体计算机辅助英语教学
- 策略战棋游戏开发计划
- Elasticseach api keys are not enabled
- 【数据处理与分析】matplotlib快速入门
- css如何将div画成三角形
- 判断链表是否有环及环入口点的求法
- 2014第二十二届全国青少年信息学奥林匹克联赛初赛
- Glove论文详解及代码分析
- 手机屏幕技术浅述(TFT、SLCD、AMOLED、NOVA、IPS、ASV)
- Darkmode.js实现黑暗模式
- 【HTCVR】VRTK插件案例分析之0038~044
- CSMA/CD(具有冲突检测的载波侦听多路访问)