题目描述:

请编写一个信号发生器模块,根据波形选择信号wave_choise发出相应的波形:wave_choice=0时,发出方波信号;wave_choice=1时,发出锯齿波信号;wave_choice=2时,发出三角波信号。



有一说一,牛客网现在的verilog的题出的就挺离谱,不看答案题目都不知道啥意思.

解题思路:

        这一题首先需要确定如何得到三种信号,以及最基本的三种信号的幅值、周期,题目里全都没有。从答案可以看出,方波周期为20个clk,且占空比为0.5,锯齿波周期为21个clk,三角波周期为40个clk。

        具体详解如下:

`timescale 1ns/1ns
module signal_generator(input clk,input rst_n,input [1:0] wave_choise,output reg [4:0]wave);//wave_choice 为0时输出方波,先写出方波信号发生器//以20个clk为方波周期(题目没有,看答案才知道),则需要一个计数器numreg [4:0] num;always @(posedge clk or negedge rst_n) beginif(!rst_n) num<=0; else if(wave_choise==0) num <=(num==19)? 0:num+1;else num <= 0;//wave <=(num>9)? 20:0; //10-19取高电平,0-9取低电平end//wave_choice=1时,为锯齿波信号,周期为21个clk//wave <=(wave==20)? 0:wave+1; 到20跳0;//wave_choice=2时,为三角波信号,周期为40//一开始思路:再添加一个num0进行计数,0-19下降,20-39上升,忽略了初始值并不是0或20;判断条件没有明确;应该需要设置一个方向变量dir ;reg dir;always @(posedge clk or negedge rst_n) begin if(!rst_n) dir<=0;  //else if(wave_choise==2)  num0 <= (num0==39)? 0:num0+1;//else num0 <= 0; 一开始的计数的方法不合适else if(wave_choise==2) dir <= (wave==1)? 1:(wave==19)? 0: dir;//值得注意的是,取1时和19时进行翻转,并不是在0和20处翻转,因为wave的是非阻塞赋值else dir <=0;end//最后进行wave_choise的判断always @(posedge clk or negedge rst_n) beginif(!rst_n) wave<=0;else case(wave_choise)0: wave <=(num==9)? 20:(num==19)? 0 :wave ; 1: wave <=(wave==20)? 0:wave+1;  //锯齿波2: wave<=(~dir)? wave-1 :wave+1 ;default: wave<=0;endcaseendendmodule

 易错:在上述代码最后一个模块中,判断条件需要好好考虑

           //一开始写的判断条件是num>9时wave=20;使得上升慢了一拍,因为num=10时才变高电平,此时已经技术了11个周期了,。应该在num==9是变高电平,num是非阻塞赋值
        //同理,对于低电平的判断也不是num=0时发生跳变,这也会导致慢了一拍,需要注意的是,若采用阻塞赋值,用0: wave <=(num>9)? 20:0 ; 判断是没有问题的。

阻塞赋值和非阻塞赋值在这一题需要很注意!



纪念第一次牛客网做题做崩了哈哈哈

Verilog 每日一题 (VL5 信号发生器)相关推荐

  1. Verilog 每日一题 (VL27 可置位计数器)

    题目描述 请编写一个十六进制计数器模块,计数器输出信号递增每次到达0,给出指示信号zero,当置位信号set 有效时,将当前输出置为输入的数值set_num. 模块的接口信号图如下:  思路:在这个波 ...

  2. 对数函数定义域和值域_呆哥数学每日一题 —— 复合函数值域

    如果想要获取往期每日一题电子版,可以加我微信:daigemath366,备注:知乎 每日一题 呆哥解析:这是一个函数和复合函数的综合问题 首先我们先把原函数的值域求出来 先直接求导: 导数不容易判断单 ...

  3. 每日一题(进制转换)

    前言:为了让小伙伴更方便的学习编程语言,小白每天都会分享一道编程题.小白也创建了一个微信公众号,会同步更新题目和相关的视觉领域的知识,如果小伙伴不方便在网页上阅读文章,可以关注微信公众号"小 ...

  4. 每日一题(合并表格)

    前言:为了让小伙伴更方便的学习编程语言,小白每天都会分享一道编程题.小白也创建了一个微信公众号,会同步更新题目和相关的视觉领域的知识,如果小伙伴不方便在网页上阅读文章,可以关注微信公众号"小 ...

  5. 每日一题(字符串拆分)

    前言:为了让小伙伴更方便的学习编程语言,小白每天都会分享一道编程题.小白也创建了一个微信公众号,会同步更新题目和相关的视觉领域的知识,如果小伙伴不方便在网页上阅读文章,可以关注微信公众号"小 ...

  6. (每日一题)P3768 简单的数学题(确信)(莫反 + 欧拉反演 + 杜教筛 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.20 莫反 和上午的那道题比较类似的 ...

  7. (每日一题)P1447 [NOI2010] 能量采集(莫反套路 + 欧拉反演 / 容斥原理)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.19 莫反 Problem Solu ...

  8. (每日一题)P3723 [AH2017/HNOI2017]礼物(经典FFT)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.15 多项式 FFT Problem ...

  9. (每日一题)P4841 [集训队作业2013]城市规划 (无向连通图计数)(普通生成函数 + 多项式求逆)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每日一题(莫反 / 多项式 / 母函数 / 群论) 2021.4.14 生成函数 + 多项式求逆 Pr ...

最新文章

  1. 禁用Chrome缓存进行网站开发
  2. zabbix 安装使用
  3. 来自十年互联网人的大厂等级晋升攻略
  4. 【001:这条路很漫长,但出发了就不要想还有多远】
  5. 二进制文件和普通文件(文本文件)区别
  6. 分割字符串,字符串去除空格
  7. Java面试题以及答案精选(架构师面试题)-Spring专题
  8. 函数节流(throttle)与函数去抖(debounce)
  9. 个人JS脚本验证大全[转]
  10. Silverlight制作scrollbar.
  11. OpenProcess()函数
  12. 才子进销存软件各版本说明
  13. 用存储过程将excel转置导出
  14. win2008服务器系统玩红警,win10系统玩红警卡死的两种方法
  15. CSS3笔记(菜鸟教程)
  16. Tetris(俄罗斯方块)
  17. 计算机方向kade期刊,计算机辅助导航技术在上颌骨肿瘤切除及缺损重建中的应用...
  18. 编程实现:任意输入英文的月份,在查找月份表后输出其对应的中文提示。缩写也可查找。
  19. 问题:腾讯会议使用麦克风时没有声音(已解决)
  20. 戴尔服务器两张Titan V配置深度学习环境

热门文章

  1. python socket + tkinter实现网络聊天室
  2. 多功能计算器1.0.3
  3. 中兴C300主控升级到V2.1.0后,telnet无法连接问题
  4. GOOGLE搜索高级技巧大集合
  5. 用弦截法求解方程的根
  6. 火星人研读人类数学发展史
  7. 2009年最新版海南三亚自助游攻略(超实用)
  8. MongoDB初认识
  9. CSharp再爱我一次,你真的懂泛型吗?
  10. 百度牵手大悦城 相爱相杀的零售与互联网需要新玩法