HDLBits刷题合集—2 Basics

HDLBits刷题合集—2 Basics

HDLBits-2 Zero

Problem Statement

建立一个没有输入只有输出常数0的电路。

代码如下:

module top_module ( output zero );
	
	assign zero = 1'b0;
	
endmodule

HDLBits-3 Wire

Problem Statement

创建一个具有一个输入和一个输出的模块,其行为类似于线。

在这里插入图片描述

代码如下:

module top_module( input in, output out );

	assign out = in;
	
endmodule

HDLBits-4 Wire4

Problem Statement

创建一个有3个输入和4个输出的模块,它的行为就像这样连接的线:
a -> w
b -> x
b -> y
c -> z
在这里插入图片描述
代码如下:

module top_module( 
    input a,b,c,
    output w,x,y,z );
	assign w = a;
    assign x = b;
    assign y = b;
    assign z = c;
endmodule

HDLBits-5 Notgate

Problem Statement

创建一个实现非门的模块。

在这里插入图片描述
代码如下:

module top_module( input in, output out );

	assign out = ~in;
	
endmodule

HDLBits-6 Andgate

Problem Statement

创建一个实现与门的模块。

在这里插入图片描述

代码如下:

module top_module( 
    input a, 
    input b, 
    output out );
    
	assign out = a & b;
	
endmodule

HDLBits-7 Norgate

Problem Statement

创建一个实现或非门的模块。或非门是输出反相的或门。当用Verilog编写NOR(或非)函数时,它需要两个操作符。
在这里插入图片描述
代码如下:

module top_module( 
    input a, 
    input b, 
    output out );
    
    assign out = ~ (a | b);
    
endmodule

HDLBits-8 Xnorgate

Problem Statement

创建一个实现XNOR(同或)门的模块。

在这里插入图片描述

代码如下:

module top_module( 
    input a, 
    input b, 
    output out );
    
    assign out = a ^~ b;
    
endmodule

HDLBits-9 Wire declare

Problem Statement

到目前为止,电路已经足够简单,输出是输入的简单函数。随着电路变得越来越复杂,你将需要电线把内部元件连接在一起。当你需要使用连线时,你应该在第一次使用它之前,在模块的主体中声明它。(将来,您将遇到更多类型的信号和变量,它们也是以同样的方式声明的,但是现在,我们将从wire类型的信号开始)。

在这里插入图片描述
参考代码如下:

module top_module (
    input in,              // Declare an input wire named "in"
    output out             // Declare an output wire named "out"
);

    wire not_in;           // Declare a wire named "not_in"

    assign out = ~not_in;  // Assign a value to out (create a NOT gate).
    assign not_in = ~in;   // Assign a value to not_in (create another NOT gate).

endmodule   // End of module "top_module"

实现以下电路。创建两个中间线(命名任何你想命名的名称,关键字除外),将与门和非门连接在一起。注意,提供非门的连接实际上是连接出去的,所以不必在这里声明第三个wire。注意线是如何由一个源驱动的(一个门的输出),但可以提供多个输入。如果你遵循图中的电路结构,你应该以四个赋值语句结束,因为有四个信号需要赋值。

在这里插入图片描述
代码如下:

`default_nettype none
module top_module(
    input a,
    input b,
    input c,
    input d,
    output out,
    output out_n   ); 
    
    wire and1,and2;
    assign and1  = a & b;
    assign and2  = c & d;
    assign out   = and1 | and2;
    assign out_n = ~( and1 | and2);

endmodule

HDLBits-10 7458

Problem Statement

7458是一个有四个与门和两个或门的芯片。这个问题比7420稍微复杂一些。
创建与7458芯片具有相同功能的模块。它有10个输入和2个输出。您可以选择使用一条assign语句来驱动每条线,也可以选择声明4条线用作中间信号,其中每条内部线由其中一个与门的输出驱动。对于额外的练习,两种方法都可以尝试。
在这里插入图片描述
代码如下:

module top_module ( 
    input p1a, p1b, p1c, p1d, p1e, p1f,
    output p1y,
    input p2a, p2b, p2c, p2d,
    output p2y );
    /*
    wire and21,and22,and11,and12;
    assign and11 = p1a & p1b & p1c;
    assign and12 = p1d & p1e & p1f;
    assign and21 = p2a & p2b;
    assign and22 = p2c & p2d;
    assign p1y = and11 | and12;
    assign p2y = and21 | and22;
    */
    assign p1y = (p1a & p1b & p1c) | (p1d & p1e & p1f);
    assign p2y = (p2a & p2b) | (p2c & p2d);

endmodule

Note

新手一枚,主要分享博客,记录学习过程,后期参考大佬代码或思想会一一列出。欢迎大家批评指正!

Kinect V2 Body Basics一个利用Microsoft Kinect for Windows V2传感器获取人体姿态动作信息的基础示例。此代码通常涉及使用Windows SDK中的Kinect SDK库,特别是通过JointType枚举来识别用户的骨骼关节数据。 以下是代码解析的基本步骤: 1. **初始化设备**:首先,你需要创建一个KinectSensor对象来连接到已开启的Kinect设备,并打开它的body追踪功能。 ```csharp using(KinectSensor sensor = KinectSensor.GetDefault()) { // 确保设备支持body tracking if(sensor.BodyTrackingEnabled) { sensor.Open(); } } ``` 2. **获取骨架数据**:`sensor.BodyFrameSource.TryGetNextBodyFrame()`会从设备抓取最新的body frame,其中包含骨骼位置角度等信息。 ```csharp using(BodyFrameReader reader = sensor.BodyFrameSource.OpenReader()) { while(reader.Has读后BodyFrame) { using(var bodyFrame = reader.ReadNextFrameAsync().Result) { // 获取并处理BodyDescriptionJointData } } } ``` 3. **处理JointData**:对于每个JointType(如Head、Shoulder、Arm等),你可以访问其Position属性来得到关节的位置坐标。例如,获取头部关节位置: ```csharp foreach(BodyJoint joint in bodyFrame.Joints[JointType.Head]) { Vector3 position = joint.Position; // 对位置做进一步处理 } ``` 4. **显示或分析数据**:根据需要,可以将骨骼信息用于游戏交互、动画控制或者数据分析。比如绘制关节轨迹,或者检测特定的动作模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值