HDLBits中文版,标准参考答案 |3.1.1 Basic Gates | 基本门电路

news2024/11/24 13:01:52

关注 望森FPGA  查看更多FPGA资讯

这是望森的第 8 期分享

作者 | 望森
来源 | 望森FPGA

目录

1 Wire | 连线

2 GND | 地线

3 NOR | 或非门

4 Another gate | 另外的门电路

5 Two gates | 两个门电路

6 More logic gates | 更多逻辑门电路

7 7420 chip | 7420 芯片

8 Truth tables | 真值表

9 Two-bit equality | 两位相等

10 Simple circuit A | 简单电路A

11 Simple circuit B | 简单电路B

12 Combine circuits A and B | 合并电路 A 和 B

13 Ring or vibrate? | 响铃还是振动?

14 Thermostat | 恒温器

15 bit population count | 比特计数电路

16 Gates and vectors | 门电路与向量

17 Even longer vectors | 更长的向量


本文中的代码都能够正常运行,请放心食用😋~

练习的官方网站是:https://hdlbits.01xz.net/

注:作者将每个练习的知识点都放在了题目和答案之后


1 Wire | 连线

题目:

实现以下电路:

答案:

module top_module (
    input in,
    output out);
 
    assign out = in;
    
endmodule

2 GND | 地线

题目:

实现以下电路:

答案:

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

3 NOR | 或非门

题目:

实现以下电路:

答案:

module top_module (
    input in1,
    input in2,
    output out);
 
    assign out = ~(in1 | in2);
    
endmodule

4 Another gate | 另外的门电路

题目:

实现以下电路:

答案:

module top_module (
    input in1,
    input in2,
    output out);
 
    assign out = in1 & ~in2;
    
endmodule

5 Two gates | 两个门电路

题目:

实现以下电路:

答案:

module top_module (
    input in1,
    input in2,
    input in3,
    output out);
 
    assign out = ~(in1 ^ in2) ^ in3;
    
endmodule

6 More logic gates | 更多逻辑门电路

题目:

好的,让我们尝试同时构建多个逻辑门。构建一个具有两个输入 a 和 b 的组合电路。

有 7 个输出,每个输出都有一个逻辑门驱动它:

  • out_and: a and b

  • out_or: a or b

  • out_xor: a xor b

  • out_nand: a nand b

  • out_nor: a nor b

  • out_xnor: a xnor b

  • out_anotb: a and-not b

预期解决方案长度:大约 7 行。

答案:

module top_module( 
    input a, b,
    output out_and,
    output out_or,
    output out_xor,
    output out_nand,
    output out_nor,
    output out_xnor,
    output out_anotb
);
 
    assign out_and                 = a & b;
    assign out_or                 = a | b;
    assign out_xor                 = a ^ b;
    assign out_nand         = ~ (a & b);
    assign out_nor                 = ~ (a | b);
    assign out_xnor         = ~ (a ^ b);
    assign out_anotb         = a & (~b);
    
endmodule

知识点:

错解分析:【注意运算符之间的优先级】
module top_module( 
    input a, b,
    output out_and,
    output out_or,
    output out_xor,
    output out_nand,
    output out_nor,
    output out_xnor,
    output out_anotb
);
 
    assign out_and                 = a & b;
    assign out_or                 = a | b;
    assign out_xor                 = a ^ b;
    assign out_nand                 = ~ a & b;
    assign out_nor                 = ~ a | b;
    assign out_xnor                 = ~ a ^ b;
    assign out_anotb         = a & (~b);
    
endmodule

7 7420 chip | 7420 芯片

题目:

7400 系列集成电路是一系列数字芯片,每个芯片都有几个门。7420 是一款带有两个 4 输入 NAND 门的芯片。

创建一个具有与 7420 芯片相同功能的模块。它有 8 个输入和 2 个输出。

答案:

module top_module ( 
    input p1a, p1b, p1c, p1d,
    output p1y,
    input p2a, p2b, p2c, p2d,
    output p2y );
 
    assign p1y = ~(p1a & p1b & p1c & p1d);
    assign p2y = ~(p2a & p2b & p2c & p2d);
 
endmodule

8 Truth tables | 真值表

题目:

在前面的练习中,我们使用了简单的逻辑门和多个逻辑门的组合。这些电路是组合电路的例子。组合意味着电路的输出是其输入的函数(在数学意义上)。这意味着对于任何给定的输入值,只有一个可能的输出值。因此,描述组合函数行为的一种方法是明确列出输入的每个可能值的输出应该是什么。这是一个真值表。

对于 N 个输入的布尔函数,有 2(N) 个可能的输入组合。真值表的每一行都列出一个输入组合,因此总是有 2(N) 行。输出列显示每个输入值的输出应该是什么。

上面的真值表适用于三输入单输出函数。它有 8 行,分别表示 8 种可能的输入组合,以及一个输出列。有 4 种输入组合的输出为 1,还有 4 种输入组合的输出为 0。

创建一个实现上述真值表的组合电路。

答案:

module top_module( 
    input x3,
    input x2,
    input x1,  // three inputs
    output f   // one output
);
 
    always@(*)begin
        case({x3,x2,x1})
            3'b000 : f = 1'b0;
            3'b001 : f = 1'b0;
            3'b010 : f = 1'b1;
            3'b011 : f = 1'b1;
            3'b100 : f = 1'b0;
            3'b101 : f = 1'b1;
            3'b110 : f = 1'b0;
            3'b111 : f = 1'b1;
            default  f = 1'b0; 
        endcase
    end
    
endmodule

知识点:

从真值表合成电路

假设我们想构建上述电路,但只能使用一组标准逻辑门。如何构建任意逻辑函数(以真值表表示)?

创建实现真值表功能的电路的一种简单方法是:以乘积和的形式来表达该功能。乘积(即“与”)之和(即“或”)意味着真值表的每一行使用一个 N 输入与门(以检测输入何时与每一行匹配),后跟一个“或”门,该“或”门仅选择导致 '1' 输出。

对于上述示例,如果输入与第 2 行或第 3 行或第 5 行或第 7 行匹配,则输出为“1”(这是一个 4 输入或门)。如果 x3=0 且 x2=1 且 x1=0,则输入与第 2 行匹配(这是一个 3 输入与门)。因此,可以使用 4 个相互“或”的与门以规范形式实现此真值表。


9 Two-bit equality | 两位相等

题目:

创建一个具有两个 2 位输入 A[1:0] 和 B[1:0] 的电路,并产生输出 z。如果 A = B,则 z 的值应为 1,否则 z 应为 0。

答案:

module top_module ( input [1:0] A, input [1:0] B, output z ); 
 
    assign z = (A == B) ? 1'b1 : 1'b0;
    
endmodule

10 Simple circuit A | 简单电路A

题目:

模块 A 应该实现函数 z = (x^y) & x。实现此模块。

答案:

module top_module (input x, input y, output z);
 
    assign z = (x^y) & x;
    
endmodule

11 Simple circuit B | 简单电路B

题目:

电路 B 可以用以下模拟波形描述:

实现该电路。

答案:

真值表:

x

y

z

0

0

1

0

1

0

1

0

0

1

1

1

表达式:

z = ~ (x ^ y)

代码:

module top_module ( input x, input y, output z );
 
    assign z = ~ (x ^ y);
    
endmodule

12 Combine circuits A and B | 合并电路 A 和 B

题目:

请参阅 mt2015_q4a 和 mt2015_q4b 了解此处使用的子模块。顶层设计由子电路 A 和 B 各两个实例组成,如下所示。

实现该电路。

答案:

module top_module (input x, input y, output z);
 
    wire z_t1;
    module_a inst1(
        .z(z_t1),
        .x(x),
        .y(y)
    );
    
    wire z_t2;
    module_b inst2(
        .z(z_t2),
        .x(x),
        .y(y)
    );
    
    wire z_t3;
    module_a inst3(
        .z(z_t3),
        .x(x),
        .y(y)
    );
    
    wire z_t4;
    module_b inst4(
        .z(z_t4),
        .x(x),
        .y(y)
    );
    
    wire z_t12,z_t34;
    assign z_t12 = z_t1 | z_t2;
    assign z_t34 = z_t3 & z_t4;
    
    assign z = z_t12 ^ z_t34;
    
endmodule
 
module module_a (input x, input y, output z);
 
    assign z = (x^y) & x;
    
endmodule
 
module module_b ( input x, input y, output z );
 
    assign z = ~ (x ^ y);
    
endmodule

13 Ring or vibrate? | 响铃还是振动?

题目:

假设您正在设计一个电路来控制手机的铃声和振动马达。每当手机需要因来电而响铃时(输入铃声),您的电路必须打开铃声(输出铃声 = 1)或马达(输出马达 = 1),但不能同时打开两者。如果手机处于振动模式(输入振动模式 = 1),则打开马达。否则,打开铃声。

尝试仅使用赋值语句,看看是否可以将问题描述转换为逻辑门的集合。

答案:

module top_module (
    input ring,
    input vibrate_mode,
    output ringer,       // Make sound
    output motor         // Vibrate
);
 
    always@(*) begin
        if(ring)begin
            if(vibrate_mode) begin
                ringer = 1'b0;
                motor = 1'b1;
            end
            else begin
                ringer = 1'b1;
                motor = 1'b0;
            end 
        end
        else begin
            ringer = 1'b0;
            motor = 1'b0;
        end
    end
    
endmodule

知识点:

设计提示:在设计电路时,人们通常必须“反向”思考问题,从输出开始,然后反向处理输入。

这通常与人们思考(顺序、命令式)编程问题的方式相反,在顺序编程中,人们会先查看输入,然后决定操作(或输出)。对于顺序程序,人们通常会认为“如果(输入是 ___ )那么(输出应该是 ___ )”。另一方面,硬件设计师经常认为“当(输入为___)时,(输出应为___)。

上述问题描述以适合软件编程的命令式形式编写(如果响铃,则执行此操作),因此您必须将其转换为更适合硬件实现的声明式形式(assign ringer = ___)。能够以两种风格思考并在两者之间进行转换是硬件设计所需的最重要技能之一。


14 Thermostat | 恒温器

题目:

加热/冷却恒温器控制加热器(冬季)和空调(夏季)。实现一个电路,根据需要打开和关闭加热器、空调和鼓风机。

恒温器可以处于两种模式之一:加热(模式 = 1)和冷却(模式 = 0)。

在加热模式下,当太冷时打开加热器(too_cold = 1),但不使用空调。

在冷却模式下,当太热时打开空调(too_hot = 1),但不打开加热器。

当加热器或空调打开时,也打开风扇以循环空气。

此外,即使加热器和空调都关闭,用户也可以请求风扇打开(fan_on = 1)。

尝试仅使用赋值语句,看看是否可以将问题描述转化为逻辑门的集合。

答案:

module top_module (
    input too_cold,
    input too_hot,
    input mode,
    input fan_on,
    output heater,
    output aircon,
    output fan
); 
 
    parameter OPEN = 1'b1;
    parameter CLOSE = 1'b0;
    
    always@(*)begin
        if(mode) begin //heating
            if(too_cold) begin
                heater = OPEN;
                aircon = CLOSE;
                fan = OPEN;
            end
            else if(fan_on) begin
                heater = CLOSE;
                aircon = CLOSE;
                fan = OPEN;
            end
            else begin
                heater = CLOSE;
                aircon = CLOSE;
                fan = CLOSE;
            end
        end
        else begin //cooling
            if(too_hot) begin
                heater = CLOSE;
                aircon = OPEN;
                fan = OPEN;
            end
            else if(fan_on) begin
                heater = CLOSE;
                aircon = CLOSE;
                fan = OPEN;
            end
            else begin
                heater = CLOSE;
                aircon = CLOSE;
                fan = CLOSE; 
            end
        end
    end
    
endmodule

15 bit population count | 比特计数电路

题目:

“人口计数”电路计算输入向量中“1”的数量。为 3 位输入向量构建人口计数电路。

答案:

我的答案:

真值表:

in[2]

in[1]

in[0]

out[1]

out[0]

0

0

0

0

0

0

0

1

0

1

0

1

0

0

1

0

1

1

1

0

1

0

0

0

1

1

0

1

1

0

1

1

0

1

0

1

1

1

1

1

卡诺图:

out[1]

in[2]/in[1] in[0]

00

01

11

10

0

0

0

1

0

1

0

1

1

1

out[0]

in[2]/in[1] in[0]

00

01

11

10

0

0

1

0

1

1

1

0

1

0

逻辑表达式:

out[1] = in[2] in[0] + in[2] in[1] + in[1] in[0]

out[0] = in[2] in[1]' in[0]' + in[2] in[1] in[0] + in[2]' in[1]' in[0] + in[2]' in[1] in[0]'

代码:

我的答案:
module top_module( 
    input [2:0] in,
    output [1:0] out );
 
    always@(*) begin
        out[1] = in[2]&in[0] | in[2]&in[1] | in[1]&in[0];
        out[0] = in[2]&~in[1]&~in[0] | in[2]&in[1]&in[0] | ~in[2]&~in[1]&in[0] | ~in[2]&in[1]&~in[0];
    end
    
endmodule
参考答案:
module top_module (
        input [2:0] in,
        output [1:0] out
);
 
        // This is a function of 3 inputs. One method is to use a 8-entry truth table:
        // in[2:0] out[1:0]
        // 000      00
        // 001      01
        // 010      01
        // 011      10
        // 100      01
        // 101      10
        // 110      10
        // 111      11
        assign out[0] = (~in[2] & ~in[1] & in[0]) | (~in[2] & in[1] & ~in[0]) | (in[2] & ~in[1] & ~in[0]) | (in[2] & in[1] & in[0]);
        assign out[1] = (in[1] & in[0]) | (in[2] & in[0]) | (in[2] & in[1]);
        
        // Using the addition operator works too:
        // assign out = in[0]+in[1]+in[2];
        
        // Yet another method uses behavioural code inside a procedure (combinational always block)
        // to directly implement the truth table:
        /*
        always @(*) begin
                case (in)
                        3'd0: out = 2'd0;
                        3'd1: out = 2'd1;
                        3'd2: out = 2'd1;
                        3'd3: out = 2'd2;
                        3'd4: out = 2'd1;
                        3'd5: out = 2'd2;
                        3'd6: out = 2'd2;
                        3'd7: out = 2'd3;
                endcase
        end
        */
        
endmodule

16 Gates and vectors | 门电路与向量

题目:

给定一个四位输入向量 in[3:0]。我们想知道每个位与其相邻位之间的一些关系:

  • out_both:此输出向量的每个位应指示相应的输入位及其左侧的相邻位(较高索引)是否均为“1”。例如,out_both[2] 应指示 in[2] 和 in[3] 是否均为 1。由于 in[3] 左侧没有相邻位,因此答案显而易见,因此我们不需要知道 out_both[3]。

  • out_any:此输出向量的每个位应指示相应的输入位及其右侧的相邻位是否为“1”。例如,out_any[2] 应指示 in[2] 或 in[1] 是否为 1。由于 in[0] 右侧没有相邻位,因此答案显而易见,因此我们不需要知道 out_any[0]。

  • out_different:此输出向量的每个位应指示相应的输入位是否与其左侧的相邻位不同。例如,out_different[2] 应指示 in[2] 是否与 in[3] 不同。对于这部分,将向量视为环绕,因此 in[3] 左侧的相邻位是 in[0]。

答案:

我的答案:
module top_module( 
    input [3:0] in,
    output [2:0] out_both,
    output [3:1] out_any,
    output [3:0] out_different );
 
    always@(*) begin
        out_both = in[3:1] & in[2:0];
        out_any = in[3:1] | in[2:0];
        out_different = in ^ {in[0],in[3:1]};
    end
    
endmodule
参考答案:
module top_module (
        input [3:0] in,
        output [2:0] out_both,
        output [3:1] out_any,
        output [3:0] out_different
);
 
        // Use bitwise operators and part-select to do the entire calculation in one line of code
        // in[3:1] is this vector:                                            in[3]  in[2]  in[1]
        // in[2:0] is this vector:                                            in[2]  in[1]  in[0]
        // Bitwise-OR produces a 3 bit vector.                           |      |      |
        // Assign this 3-bit result to out_any[3:1]:        o_a[3] o_a[2] o_a[1]
 
        // Thus, each output bit is the OR of the input bit and its neighbour to the right:
        // e.g., out_any[1] = in[1] | in[0];        
        // Notice how this works even for long vectors.
        assign out_any = in[3:1] | in[2:0];
 
        assign out_both = in[2:0] & in[3:1];
        
        // XOR 'in' with a vector that is 'in' rotated to the right by 1 position: {in[0], in[3:1]}
        // The rotation is accomplished by using part selects[] and the concatenation operator{}.
        assign out_different = in ^ {in[0], in[3:1]};
        
endmodule

知识点:

学会找到题目中的规律并用代码表示!


17 Even longer vectors | 更长的向量

题目:

给定一个 100 位输入向量 in[99:0]。我们想知道每个位与其相邻位之间的一些关系:

  • out_both:此输出向量的每个位应指示相应的输入位及其左侧相邻位是否均为“1”。例如,out_both[98] 应指示 in[98] 和 in[99] 是否均为 1。由于 in[99] 左侧没有相邻位,因此答案显而易见,因此我们不需要知道 out_both[99]。

  • out_any:此输出向量的每个位应指示相应的输入位及其右侧相邻位是否均为“1”。例如,out_any[2] 应指示 in[2] 或 in[1] 是否为 1。由于 in[0] 右侧没有相邻位,因此答案显而易见,因此我们不需要知道 out_any[0]。

  • out_different:此输出向量的每一位应指示相应的输入位是否与其左侧的相邻位不同。例如,out_different[98] 应指示 in[98] 是否与 in[99] 不同。对于这部分,将向量视为环绕,因此 in[99] 左侧的相邻位是 in[0]。

答案:

module top_module( 
    input [99:0] in,
    output [98:0] out_both,
    output [99:1] out_any,
    output [99:0] out_different );
 
    always@(*) begin
        out_both = in[99:1] & in[98:0];
        out_any = in[99:1] | in[98:0];
        out_different = in ^ {in[0],in[99:1]};
    end
    
endmodule

- END -

公z号/CSDN/EETOP搜索【望森FPGA】,查看更多FPGA资讯~

相关推荐文章,点击跳转:

望森FPGA的HDLBits专栏

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2193782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Crypto虐狗记---”你“和小鱼(外传)

前言:剧情十(我没看见还有一个。。。。) 提示: 下载: 参数有了,直接搞就行。。。 参考: *crypto*练2--攻防世界--easy_ECC - kubopiy - 博客园 (cnblogs.com) 大佬的脚本: 攻防世界 easy_ECC - diakla -…

SpringBoot:让开发更加简单

文章目录 前言什么是 SpringBoot快速启动一个 SpringBoot 项目开发一个登录功能小结 前言 有一天,你脑海中闪现了一个想法:“学了 Java 好像还没怎么使用,今天要不用 Java 开发一个自己的网站?” 你想着不禁激动起来,…

python爬虫案例——处理验证码登录网站(12)

文章目录 前言1、任务目标2、网页分析3、代码编写前言 我们在爬取某些网站数据时,可能会遇到必须登陆才能获取网页内容的情况,而大部分网站登录都需要输入验证码才能登录成功,所以接下来我将会通过实际案例来讲解如何实现验证码登录网站 1、任务目标 目标站点:中文古诗网(…

Codeforces Round 977

这场比赛是晚上vp的,太逆天了自己,给我自己都菜笑了,第二题当时差了一个那个循序渐进的点没想到,关键细节都想到了,当时以为是错的就没写,第二题没做出来确实好久没遇到过了,裂开 话不多说&…

SpringBoot基础(四):bean的多种加载方式

SpringBoot基础系列文章 SpringBoot基础(一):快速入门 SpringBoot基础(二):配置文件详解 SpringBoot基础(三):Logback日志 SpringBoot基础(四):bean的多种加载方式 目录 一、xml配置文件二、注解定义bean1、使用AnnotationCon…

MySQL之复合查询与内外连接

目录 一、多表查询 二、自连接 三、子查询 四、合并查询 五、表的内连接和外连接 1、内连接 2、外连接 前面我们讲解的mysql表的查询都是对一张表进行查询,即数据的查询都是在某一时刻对一个表进行操作的。而在实际开发中,我们往往还需要对多个表…

05:(寄存器开发)定时器一

定时器 1、系统定时器SysTick1.1、SysTick中断的使用1.2、使用SysTick制作延迟函数 2、基本定时器2.1、基本定时器中断的使用2.2、使用基本定时器制作延时函数 1、系统定时器SysTick 1.1、SysTick中断的使用 ①SysTcik系统滴答定时器和片上外设定时器不同,它在CPU…

【c语言——指针详解(3)】

文章目录 一、字符指针变量二、数组指针变量1、 数组指针变量是什么?2、 数组指针变量怎么初始化 三、⼆维数组传参的本质四、函数指针变量1、函数指针变量的创建2、函数指针变量的使⽤3、两段有趣的代码1)typedef 关键字2)typedef和define的…

<<迷雾>> 第8章 学生时代的走马灯(3)--走马灯 示例电路

几个首尾相连的触发器使用同一个控制端,能同时触发 info::操作说明 鼠标单击开关切换开合状态 注: 其中 CP 为按钮开关, 每点击一次, Q 的输出前进一级 注: 第一个触发器的输出端 Q 需要先置入高电平. 如果重置了电路, 可外接电源先使第一个 Q 置入高电平. 另: 因为…

开源跨平台三维模型轻量化软件osgGISPlugins-2、如何编译

上一篇:开源跨平台三维模型轻量化软件osgGISPlugins-1、简介 1、编译前的准备:安装、配置vcpkg包管理器 1)安装及国内镜像替换教程(Windows和Linux环境都有):vcpkg国内镜像源替换 2)下载第三方依赖库(Readme文档中所给出的百度网…

DBCCompare_TreeView中的同步查找功能实现方案

引言 在应用程序中,数据的可视化和交互性至关重要。TreeView 控件作为一种层级数据展示工具,能够有效地展示复杂的数据结构。本文将重点探讨如何在 TreeView 中实现同步查找功能,使得使用人员在操作一个树形结构时,能够自动更新另…

2-114 基于matlab的CA模型

基于matlab的CA模型,Singer模型对单机动目标进行跟踪算法,具有10页实验文档。采用蒙特卡罗方法对一个二坐标雷达对一平面上运动的目标进行观测,得到跟踪滤波结果。程序已调通,可直接运行。 下载源程序请点链接:2-114 …

计算机网络面试题——第三篇

1. TCP超时重传机制是为了解决什么问题 因为TCP是一种面向连接的协议,需要保证数据可靠传输。而在数据传输过程中,由于网络阻塞、链路错误等原因,数据包可能会丢失或者延迟到达目的地。因此,若未在指定时间内收到对方的确认应答&…

【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers

【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers Note: 持续更新中,未完。。。 目录 文章目录 【大语言模型-论文精读】谷歌-BERT:用于语言理解的预训练深度双向Transformers目录1. 引言2. 简介 1. …

Linux文件上传下载与压缩解压

首先用yum命令执行 yum install -y lrzsz 下载lrzaz1.文件上传命令: rz(拖曳方式有时行有时不行的)在终端直接输入rz,直接弹出Windows系统的文件,自行找文件进行上传操作2.下载: sz命令(拖曳方式有时行有时不行的) 用法:sz 下载文件或文件路径 默认下载路径在Windows系统相应的…

自然语言处理问答系统

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

C++(11)——vector的具体实现

目录 1.函数的头文件 2.默认成员函数 2.1构造函数 2.1.1无参的构造函数 2.1.2支持迭代器的构造函数 2.1.3支持n个val的构造函数 2.2拷贝构造函数 2.2.1写法一(传统写法) 2.2.2写法二(现代写法) 2.3赋值运算符重载函数 2…

PGMP01-概述

1.项目集管理绩效域 2.项目集管理标准的目的 the purpose of the standard for program management 定义:为项目集管理原则、时间和活动提供指导。这些原则、实践和活动被公认为在大多时候适用于大多数项目集,并为项目集管理的良好实践提供了支持。 管理…

tldr命令介绍

tldr命令介绍 安装 TLDR使用 TLDR更新命令仓库 TLDR 是 “Too Long; Didn’t Read” 的缩写,在 Linux中是一个非常有用的工具,旨在为用户提供简洁的命令行工具或程序的使用说明,TLDR的目标是解决传统手册页信息过于繁杂的问题,通过…

独享动态IP是什么?它有什么独特优势吗?

在网络世界中,IP地址扮演着连接互联网的关键角色。随着互联网的发展,不同类型的IP地址也应运而生,其中独享动态ip作为一种新型IP地址,备受关注。本文将围绕它的定义及其独特优势展开探讨,以帮助读者更好地理解和利用这…