如何在Quartus II中创建一个4位加法器

步骤1:启动quartus
1如果尚未安装quartus,请在您的计算机上安装。
注意:由于我使用的是校园计算机,因此不必安装quartus。遵循安装向导,一切正常。
2)从主窗口中打开quartus。
3)应出现项目向导。单击创建一个新项目。
参见图片
4)第一页告诉您有关项目向导的信息。单击下一步转到下一页。
5)选择要工作的目录。
注意:任何目录都可以。只是在这里保存文件。最好为您执行的任何项目创建一个文件夹。
6)将项目命名为4bitadder。这还将显示为顶层设计实体。
7)单击到下一页。
8)我们将从头开始,除了程序中包含的基础知识之外,因此请再次单击“下一步”。
9)选择您拥有的fpga的家族名称。 (旋风,地层等)。
10)您的设备在滚动栏中将具有特定名称。选择它并点击完成。最后两页将保持不变。
a)要弄清楚设备的系列名称和特定名称,请在fpga上找到处理器。它是上面写有altera的更大芯片。
b)姓氏将在第二行显示,且打印尺寸比altera稍小。 c)姓氏下方是设备的特定名称,其中包含字母和
请参见图片
11)该项目将加载空白屏幕,显示altera quartus ii。在左上角,单击“文件”,然后从出现的下拉菜单中单击“新建”。
12)从出现的窗口中选择“框图/原理图文件(bdf)”。屏幕将变为白色,并带有小点。
请参见图片
13)立即将文件保存为名称4bitadder。出现保存屏幕时,该文件应默认为该名称。
注意:要保存,请单击文件,然后另存为。添加零件后,也可以单击工具栏中的软盘进行保存。
警告:请经常保存。已知计算机和软件会崩溃。为了避免丢失信息和重做步骤,请随时考虑保存文件。
此文件将是主项目所在的位置。较小的组件将在其他文件中创建并制成一个块,其中仅看到输入和输出,而没有所有的门和混乱。这些块较小,为项目创建的混乱程度较小。
步骤2:时钟发生器
时钟驱动整个电路。最初,时钟产生于10mhz,对于我们的使用而言太快了。时钟将使用t触发器按比例缩小。您的时钟频率可能不同。检查一下它的频率,并调整t触发器的数量。我们的电路=(10 ^ 7)/(2 ^ 28)。将时钟设置为正确的频率可确保添加过程不会太快且不会超出您的控制范围。
1)开始一个名为clock_divider_1024的文件。文件-》新建
b)选择bdf
c)以给定名称保存
2)在该空间中放置10个t型触发器。
a)1)要添加组件,请单击工具栏中的符号工具。 (它看起来像是d,左侧有两根电线,右侧有一根。)
参见图片 a)2)您也可以双击空白区域以打开符号窗口。
b)符号窗口加载了两个库。一个将项目中所有的文件都制作成更简单的块。另一个是quartus随附的默认库。单击默认库旁边的+展开。
请参见图片。c)我们的组件位于基本文件夹下。单击+将其展开。
d)触发器在存储文件下。单击+将其展开。
e)选择tff。 f)由于需要倍数,因此单击选项“重复插入模式”。
g)按ok,然后在空白处单击以添加t型触发器。 (单击一次)
注意:要停止任何命令或离开新窗口,请按退出键。
请参见图片
3)将触发器分成两个水平行,每行5个。在触发器之间留出大约2块空间。
注意:对于这些指令,1块区域将与触发器相同。
请参见图片
4)添加8个2输入与门。 》 a)像打开t触发器一样打开符号窗口。 b)文件夹仍应展开。通过单击+展开逻辑文件夹。c)选择and2。我们想要倍数,因此请确保单击选项“重复插入模式”。
d)单击以添加and门。
5)将and门置于每个触发器之间,从第二个触发器之后开始。
注意:最好从左到右进行电路流动。
a)如果您已经添加了and门并且需要排列它们,只需单击并拖动即可。将鼠标左键放到要打开门的位置。
6)在第一个触发器之前添加一个输入引脚。
a)引脚位于pin文件夹下。展开它以选择输入选项卡。
7)通过双击pin_name并更改它来标记输入引脚clk_in。
8)单击正交节点工具。
请参见图片
9)连接t触发器上每个三角形的输入引脚,也称为时钟输入。 a)单击并拖动以创建导线。确保电线连接到每个组件上的电线。
警告:当三根或更多根电线以直角相交时,会形成一个“节点”。该节点看起来像一个点。请注意哪些电线正在相互连接。
10)从零件清单中添加vcc。
a)vcc位于“ other”文件夹下。
11)使用正交节点工具,将vcc连接至t的t。第一个触发器以及每个触发器的prn和clrn。
12)将第一个触发器的q连接到第二个触发器的t。
参见图片
13)连接每个and门的一个输入。
14)将“与”门的另一个输入连接到它前面的触发器的t。
15)将“与”门的另一个输入连接到它前面的触发器的t。《15》
16)添加一个输出引脚。
参见图片
17)标记输出引脚clk_out。
18)将最后一个触发器的q连接到输出引脚。
t触发器用作时钟分频器。通过将第一触发器的t连接到vcc(高电压),第一触发器在每个时钟周期将其输出q(从1切换为0或反之亦然)。 q连接到第二个触发器的t,因此第二个触发器的q仅在其t为1且时钟从0变为1时才切换其值。从那里开始,每个其他触发器都需要在每个触发器之前在将其从0更改为1之前,它的值为1。每个时钟周期的周期变得更长,从而降低了时钟的速度。
19)保存文件。
20)使文件可用作块,单击“处理”,然后分析当前文件。
21)分析完文件后,单击文件,向下进行创建/更新,然后从旁边显示的菜单中单击“为当前文件创建符号文件”。 。
我们的电路现在已被制成一个隐藏了内部零件的块,并且仅显示输入和输出。仅当在其他文件中使用原始电路时,才会更改原始电路。要在另一个项目中使用,必须将每个电路文件的.bdf和.bsf文件复制到该项目的文件夹中。
22)打开一个新文件(bdf),并将其命名为clock_generator。
23)在其中添加2个
a)在组件窗口中,展开4bitadder文件夹。 b)选择clock_divider_1024并将其添加到文件中。
24)从clock_divider_1024文件中,复制整个电路并粘贴到新文件中。
25)将触发器的数量减少到8个,与门的数量减少到6个。
这可以通过以下方法完成:a)删除第8个触发器之后的所有内容, 将第8个触发器的q连接到输出引脚。 c)删除将第8个触发器的t连接到其后的and门的导线。 br》 26)删除将clk_in连接到第一个触发器的导线。
27)将clk_in连接到一个clock_divider_1024的输入(左侧)。
28)将同一clock_divider_1024的输出(右侧)连接到输入29)将第二个clock_divider_1024的输出连接到第一个触发器的时钟输入(三角形)。
30)确保将vcc连接到每个触发器的prn和clrn,如下所示:以及电路的第一个触发器的t输入。
参见图片
31)保存文件。
32)分析文件。 (处理-》分析文件)
33)为文件创建符号。 (文件-》创建/更新-》创建符号)
34)在文件4bitadder中,添加clock_generator。
步骤3:状态机
状态机跟踪我们正在处理的位置,以便可以轻松地进行下一步。我们的状态机将跟踪装载数量,发送每个位以进行加法并显示最终结果。
1)打开一个名为state_machine的新bdf。
2)在垂直列中使用3d触发器添加符号工具。在它们之间保留1块空间。3)在每个d触发器的左侧添加3个2输入xor门。少于一个空间是必要的,但要留出一些空间。
4)使用正交节点工具,将每个xor门的输出(右侧)直接连接到d触发器d的右侧。
5)在顶部和底部两个xor门的下方和下方添加2个2输入与门。
6)旋转每个and门,使2个引脚朝上。要旋转,请单击在组件上
b)右键单击组件以显示菜单。 c)选择一个选项以翻转或旋转组件。
7)将每个“与”门的一个输入连接到一个输入。
8)将每个“与”门的另一个输入连接到其上方的“异或”门的另一个输入。
9)将每个d触发器的q输出连接到以下一个: xor门的输入直接在其左侧。
请参见图片
10)and门的输出应连接至and和xor门的输入,该输入不与d的q连接。触发器。
注意:一个xor输入从d fli连接到q。 p触发器和与门的输入。另一个xor输入连接到and门的另一个输入,以及如果它上面有一个and门,则其上面的and门的输出。
11)对于第三个xor门,一个输入将连接到
12)另一个输入连接到右侧d触发器的q。
参见图片《13》 13)添加vcc引脚。
推荐的位置是到当前组件的左上角
14)将vcc连接到每个d触发器的prn。
15)在到目前为止的左边添加3个输入引脚3个块。
16)第一个输入引脚控件。
17)将第一个输入引脚连接到连接第一个xor门和第一个and门的导线。不要将它连接到连接到d触发器q的导线。
18)将第二个输入引脚标记为“清除”。
19)将第二个输入引脚连接到每个d触发器的clrn。
20)标记第三个输入引脚“时钟”。
21)连接第三个输入引脚。每个d触发器的时钟输入(三角形)的输入引脚。
22)加3
23)标记第一个输出引脚select1。
24)将select1连接到第一个d触发器的q。
25)标记第二个输出select2。
26)将select2连接到第二个d触发器的q。
27)标记第三个输出引脚select3。
28)将select3连接到第三个d触发器的q。
参见图片
29)保存文件。
30)分析文件。
31)为文件创建符号。
32)在4bitadder的clock_generator右侧添加state_machine。
步骤4: 7段显示器
我们也希望加法器也看起来像计算器。计算器显示要添加的数字及其总和。为了在板上显示我们的数字,我们的7段显示器将采用我们数字的二进制表示形式,并将其显示在典型的数字显示器上。
1)用二进制写出数字0-9,以及每个数字如何影响
注意:这些条在顺时针方向上标记为ag。每个输出a-g都会受到输入0000-1001的影响。 (完整的7段显示器使用十六进制,0-9和af执行0-f,但我们将不需要它。如果以后要重用它,对af进行编程将非常有用。我将介绍7的完整实现-段显示。)在对7段显示进行编程时,输出0对应点亮的条,而1则表示不点亮。
请参见图片
2)创建verilog hdl文件。
请参见图片
此文件将与其他文件不同。每个段的输出将以二进制形式特别说明。该文件将被编码。
3)另存为7_segment_display。
4)在第一行中,输入“ module 7_segment_display(a,b,c,d,e,f,g,w,x,y ,z);”。
注意:ag是我们的输出,与数字时钟中的7段相对应。 w-z是我们的输入,对应于我们二进制数的每个数字。这些区分大小写。保持相同。
5)在第二行中,输入“输入w,x,y,z;”。
6)在第三行中,输入“输出a,b,c,d,e
7)在第四行上,输入“ reg a,b,c,d,e,f,g;”。
8)跳到第六行。
9)输入“总是@(w或x或y或z)”。
10)在第7行,输入“开始”。
11)第8行将说“ case({w,x,y, z})”。
第6-8行将在每种情况下开始。每种情况都包含不同的输入可能性以及每个输入的输出结果。
12)跳到第10行,输入“ 4‘b0000:a =’b0;”。
13)在线在11中,输入“ 4‘b0001:a =’b1;”。
“ 4‘b”告诉计算机我们的输入将是4位二进制数字,而不是十进制,十六进制或八进制。对于每个给定输入,都给出a的输出,该输出只能有1个小数,对应于2个可能的输出。
14)使用上面显示的输入/输出表,并完成输入的情况a.
15)输入完所有大小写后,就可以在第26行输入了。
16)在第26行输入了“ endcase”。
17)在第27行输入了“
请参见图片
18)跳到第29行,对输出b开始相同的过程。
19)为了使代码易于阅读,请在每个输出的外壳之间保留空格。 》 20)如果按照建议保留空格,则在完成输出g的格时,下一个空行将是第161行。
21)在该空行上,输入“ endmodule”。
22)保存文件。
23)分析文件。
24)创建7_segment_display的符号。
步骤5:full_adder
完整加法器是在整个程序中进行实际加法的设备。该组件接收两位并执行按位加法。加法运算首先经过0的位置,然后经过1的位置,依此类推。如果前一个进位有进位,则也必须添加进位。半加法器不考虑先前数学运算中的进位。
1)创建一个新的bdf。
2)将其另存为full_adder。
3)将2个xor门并排添加到文件中。
4)在右xor门下方添加2个2输入与门。 “与”门应垂直排列。
5)在2个“与”门的右边添加一个2输入“或”门,大约在两个垂直门之间。
6)将一个“或”门的输出连接到另一个xor门的一个输入。
7)将同一根导线连接到顶部and门的一个输入。
8)将那个and门的另一个输入连接到右xor门的另一个输入。 br》 9)将“与”门的输出连接到“或”门的输入。
请参见图片
10)在垂直线的左边添加3个输入引脚。
11 )标记顶部引脚a。
12)将a连接到左侧xor门的一个输入和底部and门的一个输入。
13)标记第二个引脚b。
14)连接b
15)标记第三个引脚ci(进位)。
16)将ci连接到连接到xor门的另一个输入的导线(进位)。右xor门与顶部and门的输入。
17)添加2个输出引脚。
18)标签一个总和。
19)连接总和到右xor门的输出。
20)标记第二个co(执行)。
21)将co连接到or门的输出。
参见图片
22)保存该文件。
23)分析该文件。
24)为full_adder创建一个符号。
步骤6:将其放在一起
4位加法器的所有较小部分均已创建。我们剩下的部分是将组件添加到必要的位置,然后将它们连接在一起(令人困惑的部分)。
到目前为止,我们的4bitadder中具有clock_generator和state_machine。 (clock_generator应该在状态机的左侧。)
1)添加8个16输入mux(161mux)。
a)展开默认库下的other文件夹。 b)展开maxplus2 .c)添加16输入多路复用器。2)将8个mux排列成两行,每行四长。它们应该在state_machine的右侧(因此也应该在clock_generator的右侧)。如果它们稍微低于state_machine,则更容易。
a)mux需要旋转,以使一个输出朝下。 b)每个mux水平之间留出1块空间,并且3-4两行之间垂直分隔。
每组4个mux接受输入。我们发送到选择输入的信号决定哪个信号将出现在输出上。
3)从左到右标记顶部的mux rega3-rega0,指示数字a的位3位0。
4 )标记底部的mux regb3-regb0。
参见图片
5)添加8个d型触发器。
a)每个mux下方应放置一个触发器。
d型触发器有助于将mux放在时钟上。 mux选择的任何信号都将按其方式发送,但是通过添加触发器,它只会在时钟信号到来时发送。
6)加4 7_segment_display。
a)所有四个将被发送。在mux的右侧,它们与mux之间大约有3个空间。
b)四个中的两个将位于mux的上方,但仍保留在mux的右侧。c)其中一个7_segment_displays将位于两组mux之间。
d)最后一个将位于底部的mux组之下。
7_segment_displays将帮助我们了解电路中正在发生的事情。一个让我们看看将要输入的数字。另一个告诉我们状态机在哪里,只有3个d触发器,选择范围是0到7。该组的最后两个显示只是为了确保电路正常工作。 mux和d触发器用作移位器。如果信号正确,则来自一个mux的信号将被发送到右侧的mux。稍后,这还将最右边的位移入加法器。 7_segment_displays会告诉我们每组mux发出了什么信号。这可以用来解决任何问题。
e)将顶部7_segment_display标记为number。将第二个显示器标记为statemachine。
g)将第三个显示器标记为rega。
h)将第四个显示器标记为regb。
参见图片
7)再添加两个两个16输入mux,一个在另一个之上,顶部的输出朝下,底部的输出朝上。 )这些mux应该在右侧,并且大约在其他mux组之间。 (对于顶部mux组,这些mux也在7_segment屏幕的右侧。标记顶部mux addbita。标记底部mux addbitb。
8)将full_adder添加到
9)在full_adder的右边添加一个d触发器,将其放低大约一半。
10)将4个16输入mux添加到t触发器的右侧。在每个组件之间保留1块空间。
a)从左到右标记mux regc3-regc0。
11)在每个mux下方添加4个d触发器。
12)在右侧添加7_segment_display
请参见2图片
13)将state_machine的输出q1连接到每个mux的sel1。
14)将state_machine的输出q1连接到7_segment_display标记为statemachine的输入z
15)将状态机的输出q2连接到每个mux的sel2。
16)将状态机的输出q2连接到标记为statemachine的7_segment_display的输入y。
17)将状态机的输出q3连接到每个mux的sel3。
18)将state_machine的输出q3连接到标有statemachine的7_segment_display的输入x。
19)将每个mux的输出连接至其下面的d触发器的d输入。 》 20)标有addbita和addbitb的mux的输出应连接到full_adder的x和y(一个输出到一个输入)。
21)连接d的q输出rega3 mux下方的触发器连接到rega3 mux的输入in0,in2-in5,in14和in15。
22)还将相同的q输出连接到rega2 mux的输入in6-in13。
23)重复步骤每个rega2-rega0下方的d触发器的16和17。
a)rega2-rega0的d触发器的q输出始终连接到其上方和右侧的寄存器的相同输入。类似于rega3。b)对于rega0下面的d触发器的第17步,q连接到rega3的输入in6-in13。
参见图片
24)在rega3下面的d触发器的q输出连接。到rega 7_segment_decoder的输入w。
25)将rega2下方的d触发器的q输出连接到rega的输入x。
26)将rega1下方的d触发器的q输出连接到rega1的输入y。 。
27)将rega0下方的d触发器的q输出连接到rega的输入z。
28)将regb3 mux下方的d触发器的q输出连接到输入in0-in2,in4,in5, regb3 mux的in14和in15。
29)将相同的输出q连接到输入in6- regb2 mux的in13。
30)对regb2-regb0以下的d触发器重复步骤23和24。a)regb2-regb0的d触发器的q输出始终连接到寄存器的相同输入b)对于regb0下面的d触发器的第24步,q连接到regb3的输入in6-in13。
参见图片
31)连接在regb3之下的d触发器的输出q到regb 7_segment_decoder的输入w。
32)在regb2之下的d触发器的输出q连接到regb2的输入x。
33)将d触发器的输出q连接到
34)将regb0下方的d触发器的输出q连接到regb0的输入z。
35)将regc3 mux下方的d触发器的q输出连接到reg0的输入z。 regc3 mux的in4,in14和in15。
36)将d触发器的相同q输出连接到regc2的输入in6-in13。
37)对regc2下面的每个d触发器重复步骤30和31。 -regc0。
a)regc2-regc0的d触发器的q输出始终连接到就像regc3一样,位于寄存器上方和右侧的寄存器的输入相同。
b)regc0的d触发器的q输出未连接到regc3的任何输入。
请参见图片
38)将regc3下方的d触发器的输出q连接到regc 7_segment_decoder的输入w。
39)将regc2下方的d触发器的输出q连接到regc2的输入x。
40)将regc2下方的d触发器的输出q连接到regc。 regc1之下的d触发器到regc的输入y。
41)regc0之下的d触发器的输出q连接到regc0的输入z。
42)rega0之下的d触发器的输出q连接到regc0的输入到in6。 addbita mux的-in15。
43)将regb0下面的d触发器的输出q连接到addbitb mux的输入in6-in15。
注意:这两个mux的其余输入和sel0将保留。悬空。这可能会在某些电路中引起问题,但不适用于此电路。请注意,如果确实引起问题,则将输入连接到vcc或gnd通常可以解决问题。 vcc类似于1,gnd类似于0。
请参见图片《44》将full_adder的输出sum连接到regc3 mux的输入in6-in13。
45)将full_adder的输出co连接到regc3 mux的d输入。 d触发器在其右侧。
46)将d触发器的q输出连接至full_adder的输入ci。
请参见图片
47)在您所有的左侧添加3个输入引脚
48)将输入标记在clock_generator时钟的左侧。
49)将其连接到clock_generator的输入。
br》 50)将clock_generator的输出连接到每个d触发器的时钟输入。
51)将相同的输出连接到state_machine的时钟输入。
52)在其左侧标记一个输入引脚state_machine control。
53)将control连接到state_machine的输入标签控件。
54)将第三个输入引脚标记为clear。
55)将clear连接到state_machine的clear输入。
56 )连接相同的清除每个d触发器的clrn的输入引脚。
57)在rega3 mux上方添加6个输入引脚。
58)标记第一个输入引脚loada。
59)将loada连接到rega3-rega0的sel0。
60)将第二个输入引脚标记为bit3。
61)将bit3连接到rega3的in1,regb3的in3,regc3的in5,以及标记为number的7_segment_display的输入w。
62)标记第三个输入引脚bit2。
63)将bit2连接到rega2的in1,regb2的in3,regc2的in5,以及标记为number的7_segment_display的输入x。
64)标记第四个输入引脚bit1。
65)连接rega1的位1到in1,regb1的in3,regc1的in5和标有编号的7_segment_display的输入y。
66)标记第五个输入引脚bit0。
67)将bit0连接到rega0的in1,in3 regb0,regc0的in5和标记为number的7_segment_display的输入z。
68)标记第六个输入引脚gn。
69)将gn连接到每个mux的输入gn。
70)添加输入销到regb3 mux的左侧。
71)将其标记为loadb。
72)将loadb连接到regb3-r的sel0 egb0。
73)在regc3 mux的左侧添加一个输入引脚。
74)在引脚c上标记负载c.
75)将loadc连接到regc3-regc0的sel0。
76)添加7个输出标记为number的7_segment_display右侧的引脚。
77)标记输出inputa-inputg。
78)将number的输出ag连接到其相应的输出引脚。
79)在右侧添加7个输出引脚of 7_segment_display statemachine。
80)在输出上标记statemachinea-statemachineg。
81)将statemachine的输出ag连接到其相应的输出引脚。
参见图片
82)在7的右侧添加7个输出引脚。 7_segment_display rega。
83)标记输出regaa-regag。
84)将rega的输出ag连接到其相应的输出引脚。
85)在7_segment_display regb的右侧添加7个输出引脚。 》 86)将输出regba-regbg标记。
87)将regb的输出ag连接到其相应的输出引脚。
88)在7_segment_display regc的右侧添加7个输出引脚。
89)标记输出suma-sumg。
90)将regc的输出ag连接到其相应的输出引脚。
请参见图片
91)保存文件。
92)单击“处理”。
93)转到“开始编译”(此处将花费几分钟。)
程序可能会出现一些警告,但我们的电路仍应正确加载到fpga。
参见图片
步骤7:引脚分配
由于完成了项目电路,因此需要将输入和输出引脚分配给fpga板上的开关和led。这将是测试电路是否正常的测试。
1)单击“ assignments”。
2)进入“ pin planner”。
将出现一个新窗口,其中包含您输入的所有输入和输出引脚。
请参见图片
3)拿起fpga手册或在google上查找设备的引脚分配。
引脚分配应通过所有开关,led,按钮和7段显示器。每个位置将在同一行中给出。 (例如:pin_n25)
4)在引脚规划器上找到bit0-bit3(应按字母顺序)。
5)选择要为每个引脚使用的开关(我对bit0-使用了switch0-switch3分别为bit3)
6)在您的手册中找到要使用的开关并找到其位置id。
7)在引脚规划器中,单击位置框,然后使用下拉菜单选择
8)对于您的输出,请确保该引脚对应于7段显示器的正确段。
9)输入clock应该连接到内部时钟源。请确保使用可与clock_generator正确缩放的适配器。
注意:确保输入引脚仅是开关和按钮。我们所有的输出应该是7段显示器。
这里是您可以做的一个例子。
•bit0-bit3的switch0-3。
•loada
的开关4• loadb
•loadc
的开关6•control
的开关7•gn
的开关8•clear的开关17(由于它会复位整个电路,因此我们尝试使其远离开关我们会更定期地移动)
•输入a-inputg的hex7
•statemachinea-statemachineg 的hex5•regaa-regag
hex3•regba-regbg
hex2•suma的hex0


iphone8什么时候上市:iPhone8大改革,全面显示屏只能放弃指纹技术,这样的苹果你还要吗?
联想个人云X1:80TB海量空间、5Pro盘位安全备份
扁线电机发卡超高速成型方案
微软上线.Net 5首个预览版 预计今年11月转正
ARM最新Cortex-A73和Mali-G71,专为VR而生
如何在Quartus II中创建一个4位加法器
家用配电箱规格
ADAS纳入安全法规,智能车相关应用技术已臻成熟
什么是SR-IOV呢?SR-IOV技术的优缺点及应用场景
详解红外通信技术在温湿度变送器上的实现与运用
基于PROTEUS软件的数字电压表印刷电路板设计
Σ-Δ型ADC拓扑背后的基本原理:第1部分
未来智造潮流:制造模式正在向小批量、多品种转变
通信电源的节能方案 呼吸式功率管理显效
区块链的互操性是怎样实现的
扉乐电动牙刷有效呵护牙齿,降低噪音技术一流
多缸柴油机的工作顺序
HyperX在CES 2020展上推出了多款全新的电竞周边产品
BAT结合AI+Iot赋能落地农业+工业+新零售生态布局
一文解析人工智能的发展前景