码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【牛客网】Verilog快速入门-基础语法(1)


    ⭐作者:       桐桐花❀

    ⭐个人主页:桐桐花的博客_CSDN博客-python,Verilog,数字IC领域博主

    ⭐系列专栏:Verilog刷题_桐桐花的博客-CSDN博客

    ⭐推荐刷题神器:
    牛客网 - Verilog刷题模块

    Verilog快速入门-基础语法篇(1)

    1、四选一多路选择器

    描述:制作一个四选一的多路选择器,要求输出定义上为线网类型。

    状态转换:

    d0    11
    d1    10
    d2    01
    d3    00

    信号示意图:

     波形示意图:

    输入描述:

    输入信号   d1,d2,d3,d4 sel
    类型 wire

    输出描述:

    输出信号 mux_out
    类型  wire

    答案 

    1. `timescale 1ns/1ns
    2. module mux4_1(
    3. input [1:0] d1,d2,d3,d0,
    4. input [1:0] sel,
    5. output [1:0]mux_out
    6. );
    7. //*************code***********//
    8. reg [1:0] mux_out_1;
    9. always@(*)
    10. begin
    11. case(sel)
    12. 2'b00: begin mux_out_1 = d3; end
    13. 2'b01: begin mux_out_1 = d2; end
    14. 2'b10: begin mux_out_1 = d1; end
    15. 2'b11: begin mux_out_1 = d0; end
    16. endcase
    17. end
    18. assign mux_out = mux_out_1;//(输出定义上为线网类型)
    19. //*************code***********//
    20. endmodule

    问题:下面代码可以运行成功吗?如果没有运行成功,有什么问题?

    无法编译成功。 

     模块端口默认声明变量为wire类型,但是在always块里,变量是reg类型的。

     把模块端口里面的mux_out改成 reg类型,可以编译成功吗?

    依然没有编译成功。

    因为 ,“描述:制作一个四选一的多路选择器,要求输出定义上为线网类型。”

    所以要将MUX的输出结果通过assign连接出去。即

    assign mux_out = mux_out_1;//(输出定义上为线网类型)

    2、异步复位的串联T触发器

    题目描述:           

    用verilog实现两个串联的异步复位的T触发器的逻辑,结构如图:

    信号示意图:

     波形示意图:

    输入描述:

    输入信号   data, clk, rst
    类型 wire
    在testbench中,clk为周期5ns的时钟,rst为低电平复位

    输出描述:

    输出信号 q 
    类型  reg 

    答案 

    1. module Tff_2 (
    2. input wire data, clk, rst,
    3. output reg q
    4. );
    5. reg q1;
    6. always@(posedge clk or negedge rst)
    7. begin
    8. if(!rst)
    9. begin
    10. q1<=0;
    11. q<=0;
    12. end
    13. else
    14. begin
    15. q1 <= data ^ q1;
    16. q <= q1 ^ q;
    17. end
    18. end
    19. endmodule

    testbench

    1. `timescale 1ns/1ns
    2. module testbench( );
    3. reg clk=0;
    4. reg rst=0;
    5. reg data=0;
    6. wire q;
    7. Tff_2 Tff_2(
    8. .data(data),
    9. .clk(clk),
    10. .rst(rst),
    11. .q(q)
    12. );
    13. always #5 clk = ~clk; // Create clock with period=10
    14. initial begin
    15. #10 rst = 1'b1;
    16. #60 data = 1'b1;
    17. #110 data = 1'b0;
    18. #160 data = 1'b1;
    19. end
    20. endmodule

    相关知识点:

    1、T触发器

     T触发器特性方程

    T触发器的特性表 

    T触发器 状态转换图

     2、异步复位 

    异步复位是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。

    练习题目:

    四选一多路器_牛客题霸_牛客网 (nowcoder.com)

    异步复位的串联T触发器_牛客题霸_牛客网 (nowcoder.com)

  • 相关阅读:
    JAVA基础算法(8)----- 设计循环双端队列
    Oracle Primavera Unifier进度管理器(Schedule Manager)
    企业进行媒体宣传的重要性
    虹科案例 | AR内窥镜手术应用为手术节约45分钟?
    【业务功能篇91】微服务-springcloud-多线程-线程池执行顺序
    目标检测算法
    数据挖掘实验一
    mysql高手进阶优化篇
    2024-05-10 Ubuntu上面使用libyuv,用于转换、缩放、旋转和其他操作YUV图像数据,测试实例使用I420ToRGB24
    VTK8.0.0编译+QT5.9.2+VS2017
  • 原文地址:https://blog.csdn.net/weixin_41788560/article/details/126470476
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号