【USTC】verilog 习题练习 41-45

这篇具有很好参考价值的文章主要介绍了【USTC】verilog 习题练习 41-45。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

41 下降沿触发的寄存器

题目描述

在时序逻辑电路中,敏感变量不但可以是触发信号的上升沿(posedge),也可以是下降沿(negedge),试创建 8bit 位宽的寄存器,所有 DFF 都应该由 clk 的下降沿(负边缘)触发。同时采用高电平有效的同步复位方式,复位值为 0x34 而不是零。

输入格式

输入信号 clk,时钟信号。 输入信号 reset,复位信号,高电平有效(复位)。 输入信号 d,位宽 8bit,任意数据信号。

输出格式

输出信号 q,位宽 8bit,在时钟下降沿取输入信号 d 的值,若复位信号有效则复位为值 0x34,复位方式为同步复位。

【USTC】verilog 习题练习 41-45,Verilog,USTC,fpga开发,verilog,fpga

module top_module (
    input				clk		,
    input				reset	,
    input		[7:0]	d		,
    output	reg	[7:0]	q
);
	// Write your code here
    always @(negedge clk) begin
        if(reset) begin
            q <= 8'h34;
        end else begin
            q <= d;
        end
    end
endmodule

42 异步复位的寄存器

题目描述

在前面的例子中,复位信号只能在触发信号的触发边沿才能起作用,也就是说如果没有触发边沿就无法对电路复位,这大大限制了复位的功能,因此还有一种经常使用的复位方式,称为异步复位。
为了使复位信号不依赖于时钟边沿,则复位信号也应该放在always进程块的敏感变量列表中。复位信号高电平有效和低电平有效在编码时稍有不同,对于高电平有效的复位信号来说,可以写成如下形式:

always@(posedge clk or posedge reset)
begin
    if(reset) …
    else …
end

如果是低电平有效的复位信号,则应写成如下形式:

always@(posedge clk or negedge reset)
begin
    if(~reset) …
    else …
end

试创建Verilog模块,实现一个时钟上升沿触发的,支持高电平有效的异步复位功能的8bit寄存器,寄存器复位值为0。

输入格式

2个 1bit 位宽的信号 clk、areset 1个 8bit 位宽的信号 d

输出格式

1个 8bit 位宽的信号 q

【USTC】verilog 习题练习 41-45,Verilog,USTC,fpga开发,verilog,fpga

module top_module (
    input clk,
    input areset,   // active high asynchronous reset
    input [7:0] d,
    output reg [7:0] q
);
// Write your code here
    always@(posedge clk or posedge areset)
        begin
            if(areset) q <= 8'b0;
            else q <= d;
        end
endmodule

43 带使能的寄存器

题目描述

在前面的电路中,寄存器输出端 q 在每个时钟的上升沿都会更新一次,但有时候我们可能需要使输出端保持不变,这时就需要加入使能信号,创建一 16bit 位宽(2byte)的寄存器,其中每字节都由一个使能信号控制,使能为 0 时,输出保持不变,使能为 1 时更新 q。时钟上升沿触发,同步复位,复位低电平有效,复位值为 0。

输入格式

任意有效的 16bit 位宽数据

输出格式

每个字节都由一个使能信号控制:使能为0时输出保持不变,使能为1时更新q

【USTC】verilog 习题练习 41-45,Verilog,USTC,fpga开发,verilog,fpga

module top_module(
  input clk,
  input resetn,
  input [1:0] byteena,
  input [15:0] d,
  output reg [15:0] q

);
    always @(posedge clk) begin
        if (~resetn)
            q <= 16'd0;
        else
            case(byteena)
                2'b11 : q <= d;
                2'b10 : q[15:8] <= d[15:8]; //byteena[1] 控制上字节 d[15:8]
                2'b01 : q[7:0] <= d[7:0];   //byteena[0] 控制下字节 d[7:0]
                default : q <= q;
            endcase
        end
endmodule

44 触发器+逻辑门

题目描述

编写verilog代码,实现下图所示的电路功能【USTC】verilog 习题练习 41-45,Verilog,USTC,fpga开发,verilog,fpga

输入格式

1

输出格式

1

【USTC】verilog 习题练习 41-45,Verilog,USTC,fpga开发,verilog,fpga

module top_module (
    input clk,
    input in, 
    output reg out);
    //your code
	wire res;
    assign res = in ^ out;
    always @(posedge clk) begin
    	out <= res;
    end
endmodule

45 寄存器+逻辑门

题目描述

编写Verilog代码,实现下图所示的电路功能,假设所有D触发器的初始复位值为0【USTC】verilog 习题练习 41-45,Verilog,USTC,fpga开发,verilog,fpga

输入格式

clk,x

输出格式

z

【USTC】verilog 习题练习 41-45,Verilog,USTC,fpga开发,verilog,fpga文章来源地址https://www.toymoban.com/news/detail-820169.html

module top_module (
    input clk,
    input x,
    output z
); 
    reg Q1=0,Q2=0,Q3=0;
    wire D1,D2,D3;
    
    assign D1 = x ^ Q1;
    assign D2 = x & ~Q2;
    assign D3 = x | ~Q3;
    
    always @(posedge clk) begin
    	Q1 <= D1;
    	Q2 <= D2;
    	Q3 <= D3;
    end
    
    assign z = ~(Q1|Q2|Q3);
endmodule

到了这里,关于【USTC】verilog 习题练习 41-45的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【FPGA Verilog开发实战指南】初识Verilog HDL-基础语法

    就是用代码来描述硬件结构 语言有VHDL与Verilog HDL Verilog HDL 是从C语言来的,学的快 ###例子 也叫保留字,一般是小写 module 表示模块的开始 endmodule 模块的结束 模块名 一般与.v文件的名字一致 输入信号 input 输出信号 output 既做输入也做输出 inout 需要一些变量和参数对输

    2024年02月21日
    浏览(43)
  • 基于FPGA的QPSK调制系统verilog开发

    目录 一、理论基础 二、核心程序 三、测试结果         正交相移键控(Quadrature Phase Shift Keying,QPSK)是一种数字调制方式。它分为绝对相移和相对相移两种。由于绝对相移方式存在相位模糊问题,所以在实际中主要采用相对移相方式DQPSK。QPSK是一种四进制相位调制,具有良

    2024年02月01日
    浏览(45)
  • 基于Verilog 语言开发的FPGA密码锁工程

    基于Verilog 语言开发的FPGA密码锁工程。 通过矩阵键盘输入按键值。 输入12修改密码,13清除密码,可以修改原来默认的密码,修改时首先要输入当前密码进行验证,正确后才能更新当前密码,否则修改不成功。 修改结束后按键15,确认修改成功。 也直接使用默认密码作为最终

    2024年02月10日
    浏览(53)
  • 基于FPGA的FSK调制解调系统verilog开发

    目录 1.算法仿真效果 2.verilog核心程序 3.算法涉及理论知识概要 4.完整verilog VIVADO2019.2仿真结果如下:       频移键控是利用载波的频率变化来传递数字信息。数字频率调制是数据通信中使用较 早的一种通信方式,由于这种调制解调方式容易实现,抗噪声和抗衰减性能较强,

    2024年02月05日
    浏览(70)
  • MySQL45道练习题

    作业需要数据表SQL语句已给  1. 查询\\\" 01 \\\"课程比\\\" 02 \\\"课程成绩高的学生的信息及课程分数  1.1 查询同时存在\\\" 01 \\\"课程和\\\" 02 \\\"课程的情况 1.2 查询存在\\\" 01 \\\"课程但可能不存在\\\" 02 \\\"课程的情况(不存在时显示为 null ) 1.3 查询不存在\\\" 01 \\\"课程但存在\\\" 02 \\\"课程的情况 2.查询平均成绩大于

    2024年01月25日
    浏览(49)
  • fpga开发基于verilog HDL的四人抢答器

    鱼弦:CSDN内容合伙人、CSDN新星导师、全栈领域创作新星创作者 、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 智能电子抢答器可容纳4组参赛者抢答,每组设一个抢答钮。 ③ 电路具有第一抢答信号的鉴别和锁存功能。

    2024年02月04日
    浏览(48)
  • FPGA开发] 使用Verilog实现一个简单的计数器

    计数器是数字电路中常见的元件之一,它能够按照一定的规律进行计数。在FPGA开发中,我们可以使用硬件描述语言Verilog来实现一个简单的计数器。本文将为您详细介绍如何使用Verilog编写一个基于FPGA的计数器,并提供相应的源代码。 首先,我们需要定义计数器的功能和规格

    2024年02月03日
    浏览(56)
  • 基于vivado+Verilog FPGA开发 — GT收发器

    代码规范:Verilog 代码规范_verilog代码编写规范-CSDN博客 开发流程:FPGA基础知识----第二章 FPGA 开发流程_fpga 一个项目的整个流程-CSDN博客   源码下载:GitHub - Redamancy785/FPGA-Learning-Record: 项目博客:https://blog.csdn.net/weixin_51460407 零、低速通信接口的缺陷 1、同步通信要求传输数据

    2024年04月17日
    浏览(60)
  • 密码锁设计Verilog代码Quartus 睿智FPGA开发板

    名称:密码锁设计Verilog代码Quartus  睿智FPGA开发板(文末获取) 软件:Quartus 语言:Verilog 代码功能: 1、设计一个密码锁的控制电路,当输入正确代码时,输岀开锁信号用红灯亮、绿灯 熄灭表示关锁,用绿灯亮、红灯熄灭表示开锁 2、在锁的控制电路中储存一个可以修改的4位代

    2024年01月18日
    浏览(46)
  • 基于FPGA的7x7矩阵求逆verilog开发

    up目录 一、理论基础 二、核心程序 三、测试结果       要通过Verilog实现矩阵求逆,需要进行复杂的硬件设计,这是一个相当复杂的任务,特别是对于大型矩阵。矩阵求逆涉及到大量的浮点运算和存储操作,因此需要高度的硬件设计和优化。以下是一般步骤,可以帮助您开始

    2024年02月15日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包