交通信号灯设计

**

设计说明:

**
此信号灯主要应用在主路与次路相交的交叉口处,信号灯共分为4个不同的状态,利用Moore型状态机实现,用六个灯代表主路与次路的六个信号灯(红、绿、黄),高电平时信号灯亮,低电平时灭。同时用4个数码管分别显示主路与次路当前信号状态下的剩余时间,并设置复位信号按键rst。
**

设计原理图:

**
电路原理图
整个电路可以分为4个部分,分别是时钟模块、BCD码与二进制转换模块、状态机模块、数码管显示模块。Zero1为复位按键,cp为输入的100MHZ时钟信号,red1、yellow1、green1、red2、yellow2、green2为输出的信号灯状态,1代表亮,0代表灭。a_to_g则分别对应于数码管的显示,an则是数码管的位选端,下面分别介绍这几个模块的具体功能。

  • 时钟模块:

此模块的输入为EGO1开发板上的100MHZ时钟,对应着P17管脚,可将时钟信号进行分频,数码管显示需要200HZ的时钟信号,状态机需要1HZ的时钟信号,没有时钟信号,整个系统也将无法正常工作,时钟模块的核心代码如下所示:(时钟模块代码不需要这么长,这里粘贴的是100MHZ的大部分分频,方便后续复习)

module clk_div(input CP_100MHz, output clk_100MHz,output clk_1kHz,output clk_200Hz,output clk_100Hz,output clk_50Hz,output clk_20Hz,output clk_10Hz,output clk_5Hz,output clk_2Hz,output clk_1Hz);reg [16 : 0] cnt_1kHz;reg [2 : 0] cnt1_200Hz;reg [2: 0] cnt2_200Hz;reg [2 : 0] cnt_100Hz;reg [3 : 0] cnt_50Hz;reg [4 : 0] cnt_20Hz;reg [5 : 0] cnt_10Hz;reg [6 : 0] cnt_5Hz;reg [7 : 0] cnt_2Hz;reg [8 : 0] cnt_1Hz;reg clk_1kHz_reg;//reg clk_200Hz_reg;reg clk_200Hz_reg1;reg clk_200Hz_reg2;reg clk_100Hz_reg;reg clk_50Hz_reg;reg clk_20Hz_reg;reg clk_10Hz_reg;reg clk_5Hz_reg;reg clk_2Hz_reg;reg clk_1Hz_reg;initialbegincnt_1kHz=0;cnt_100Hz=0;cnt_50Hz=0;cnt_20Hz=0;cnt_10Hz=0;cnt_5Hz=0;cnt_2Hz=0;cnt_1Hz=0;                                clk_1kHz_reg=0;clk_200Hz_reg1=0;clk_200Hz_reg2=0;clk_100Hz_reg=0;clk_50Hz_reg=0;clk_20Hz_reg=0;clk_10Hz_reg=0;clk_5Hz_reg=0;clk_2Hz_reg=0;clk_1Hz_reg=0;end  always @ (posedge CP_100MHz) begin      if (cnt_1kHz < 17'd100000/2-1)//17'h186A0=100000begincnt_1kHz <= cnt_1kHz + 1;clk_1kHz_reg <= clk_1kHz_reg;endelsebegincnt_1kHz = 0;clk_1kHz_reg <= ~clk_1kHz_reg;        endend//200Hzalways @ (posedge clk_1kHz) begin      if (cnt1_200Hz < 3'd5-1)cnt1_200Hz <= cnt1_200Hz + 1;elsecnt1_200Hz <= 0;  end     always @ (posedge clk_1kHz) begin      if (cnt1_200Hz < 3'd5/2)clk_200Hz_reg1 <= 1;elseclk_200Hz_reg1 <= 0;end always @ (negedge clk_1kHz) begin      if (cnt2_200Hz < 3'd5-1)cnt2_200Hz <= cnt2_200Hz + 1;elsecnt2_200Hz <= 0;  end      always @ (negedge clk_1kHz) begin      if (cnt2_200Hz < 3'd5/2)clk_200Hz_reg2 <= 1;elseclk_200Hz_reg2 = 0;end assign clk_200Hz=clk_200Hz_reg1|clk_200Hz_reg2;//100Hzalways @ (posedge clk_1kHz) begin      if (cnt_100Hz < 4'd10/2-1)begincnt_100Hz <= cnt_100Hz + 1;clk_100Hz_reg <= clk_100Hz_reg;endelsebegincnt_100Hz = 0;clk_100Hz_reg <= ~clk_100Hz_reg;        endend     //50Hzalways @ (posedge clk_1kHz) begin      if (cnt_50Hz < 5'd20/2-1)begincnt_50Hz <= cnt_50Hz + 1;clk_50Hz_reg <= clk_50Hz_reg;endelsebegincnt_50Hz = 0;clk_50Hz_reg <= ~clk_50Hz_reg;        endend//20Hzalways @ (posedge clk_1kHz) begin      if (cnt_20Hz < 6'd50/2-1)begincnt_20Hz <= cnt_20Hz + 1;clk_20Hz_reg <= clk_20Hz_reg;endelsebegincnt_20Hz = 0;clk_20Hz_reg <= ~clk_20Hz_reg;        endend//10Hzalways @ (posedge clk_1kHz) begin      if (cnt_10Hz < 7'd100/2-1)begincnt_10Hz <= cnt_10Hz + 1;clk_10Hz_reg <= clk_10Hz_reg;endelsebegincnt_10Hz = 0;clk_10Hz_reg <= ~clk_10Hz_reg;        endend //5Hzalways @ (posedge clk_1kHz) begin      if (cnt_5Hz < 8'd200/2-1)begincnt_5Hz <= cnt_5Hz + 1;clk_5Hz_reg <= clk_5Hz_reg;endelsebegincnt_5Hz = 0;clk_5Hz_reg <= ~clk_5Hz_reg;        endend //2Hzalways @ (posedge clk_1kHz) begin      if (cnt_2Hz < 9'd500/2-1)begincnt_2Hz <= cnt_2Hz + 1;clk_2Hz_reg <= clk_2Hz_reg;endelsebegincnt_2Hz = 0;clk_2Hz_reg <= ~clk_2Hz_reg;        endend //1Hzalways @ (posedge clk_1kHz) begin      if (cnt_1Hz < 10'd1000/2-1)begincnt_1Hz <= cnt_1Hz + 1;clk_1Hz_reg <= clk_1Hz_reg;endelsebegincnt_1Hz = 0;clk_1Hz_reg <= ~clk_1Hz_reg;        endend  assign clk_100MHz = CP_100MHz;  assign clk_1kHz = clk_1kHz_reg;assign clk_100Hz = clk_100Hz_reg;assign clk_50Hz  = clk_50Hz_reg;assign clk_20Hz  = clk_20Hz_reg;assign clk_10Hz  = clk_10Hz_reg;assign clk_5Hz   = clk_5Hz_reg;assign clk_2Hz   = clk_2Hz_reg;assign clk_1Hz   = clk_1Hz_reg;endmodule

**

  • 状态机模块:*

**
此模块的输入为复位信号rst以及时钟信号clk,输出为red1,yellow1,green1;red2,
yellow2,green2。高电平时亮,低电平时灭,利用Moore型状态机实现,整个信号灯周期共分为4个状态,状态表如下图所示:
在这里插入图片描述

利用Verilog语言实现过程如下:

module state(  input rst,clk,output red1,yellow1,green1,red2,yellow2,green2,output [7:0] counter_x,counter_y);reg red1,yellow1,green1,red2,yellow2,green2;reg [3:0] current_state,next_state;reg [7:0] counter,counter_x,counter_y,timeover,timeover_x,timeover_y;parameter S0 = 2'b00, S1 = 2'b01, S2 = 2'b10, S3 = 2'b11;parameter time1 = 'd24, time2 = 'd4;//状态转换always @(posedge clk or negedge rst)if(!rst)begincurrent_state <= S0;counter <= time1;counter_x <= 'd24;counter_y <= 'd29;endelsebeginif(counter == 0)begincurrent_state <= next_state;counter <= timeover;counter_x <= timeover_x;counter_y <= timeover_y;endelsebegincounter <= counter - 1;counter_x <= counter_x - 1;counter_y <= counter_y -1;endend//状态改变always @(current_state)begincase(current_state)S0:begin //横向绿灯,纵向红灯red1 = 0; yellow1 = 0; green1 = 1;red2 = 1; yellow2 = 0; green2 = 0;next_state <= S1; timeover <= time2;timeover_x <= 'd4;timeover_y <= 'd4;endS1:begin //横向黄灯,纵向红灯red1 = 0; yellow1 = 1; green1 = 0;red2 = 1; yellow2 = 0; green2 = 0;next_state <= S2; timeover <= time1;timeover_x <= 'd29;timeover_y <= 'd24;endS2:begin //横向红灯,纵向绿灯red1 = 1; yellow1 = 0; green1 = 0;red2 = 0; yellow2 = 0; green2 = 1;next_state <= S3; timeover <= time2;timeover_x <= 'd4;timeover_y <= 'd4;endS3:begin //横向红灯,纵向黄灯red1 = 1; yellow1 = 0; green1 = 0;red2 = 0; yellow2 = 1; green2 = 0;next_state <= S1; timeover <= time1;timeover_x <= 'd24;timeover_y <= 'd29;enddefault:begin //横向绿灯,纵向红灯red1 = 0; yellow1 = 0; green1 = 1;red2 = 1; yellow2 = 0; green2 = 0;next_state <= S1; timeover <= time2;timeover_x <= 'd4;timeover_y <= 'd4;endendcaseend        
endmodule

  • 二进制与BCD码转换模块:

此模块的输入为状态机模块的counter_x与counter_y输出,分别表示主路与次路当前状态下所剩余的时间,但它们均是由二进制数表示的,为了让数码管可以正常显示,需要借助BCD码来实现,也就是将二进制转换成BCD码,此次设计采用大4加3移位算法,算法原理如下:

  1. 4位二进制数大于15则进位,4位BCD码大于9则进位,若使4位二进制数变为BCD码,则其大于9时加6,得到的便是其BCD码(由真值表规律可知),例如:12的二进制数为1100,它是大于9的,则1100+0110=1_0010,即为BCD码的12。
  2. 对于5位二进制,先判断高四位是否大于9,若大于9,则加6并向左移位;若小于9,则直接向左移位。例如30的二进制数为11110,高4位1111的BCD码为10101,因为其大于9,所以加6,变为1_0101,左移一位之后,得到0010_1010,新低四位的值1010大于9,所以新低4位加6得到0011_0000,即为30的BCD码。所以只要通过左移及大9加6(大于等于10加6),则可转换任意位2进制数为BCD码。
    但是该算法是移位加6,即加0110。而大4加3(0011)算法比此法占用资源少,但在算法上两者是等价的,即判断4位二进制数是否大于等于5,若大于等于5则加3,再移位;否则直接移位。例如10的二进制数0_1010
  3. 按照大9加6算法,5的二进制数为0101,左移一位之后变为1010(10),此时需要加6并左移一位,变为BCD码1_0000。即10+6=16(进1)
  4. 按照大4加3算法,5的二进制数为0101,大于4,此时需要加3并左移一位,变为BCD码1_0000。即(5+3)*2 = 16(进1),左移一位(低位补0)相当于乘以2。
  5. 8位2进制数最大能表示的数字为255,用BCD码表示,需要10位来表示。因此此模块的输入为8位二进制数,输出为10位二进制数。
    a.把二进制数左移一位;
    b.如果共移了8位,那么BCD数就在百位、十位和个位列,转换完成;
    c.如果在BCD列中,任何一个二进制数是5或比5更大,那么就在BCD列的数值加 3;
    d.返回步骤a。
    例如二进制数1111_1111到255的转换过程如下所示:
    在这里插入图片描述在这里插入图片描述

利用Verilog语言实现的过程如下:

module binbcd8 (input wire [7:0] b,output reg [9:0] p
);// 中间变量 reg [17:0] z;//8位输入,10位输出,共18个数integer i;always @ ( * )   //always模块中的任何一个输入信号或电平发生变化时,该语句下方的模块将被执行begin for (i = 0; i <=17; i = i + 1)z[i] = 0;z[10:3] = b;   // 向左移3位,8421码,左移两位均不会大于等于5repeat (5)                           // 重复5次begin if (z[11:8] > 4)                     // 如果个位大于4z[11:8] = z[11:8] +3;              // 加3if (z[15:12] > 4)                     // 如果十位大于4 z[15:12] = z[15:12] +3;            // 加3z[17:1] = z[16:0];                   // 左移一位endp = z[17:8];                          // BCD end
endmodule
  • 数码管显示模块:

此模块的输入为二进制转换为BCD码模块的输出,用来使数码管正确的显示十进制数,也就是此次实验设计中的各个信号灯所剩余的时间,利用Verilog语言实现的过程如下:

module hx7seg(input wire [11:0] x,//4的倍数,12位input wire cclk,//保证有一个足够的频率。一般工作在200HZinput wire clr,//清零端output reg [6:0] a_to_g,output reg [1:0] an//位选端,控制数码管的选择
);reg s;reg [3:0] digit;// 2-位计数器always @ (posedge cclk or posedge clr)begin if (clr ==1)//高电平清零s <= 0;elses <= s + 1;end// Quad 4-to-1 MUX: mux44always @ ( * )//always模块中的任何一个输入信号或电平发生变化时,该语句下方的模块将被执行。case (s)//本项目中的所有时间均是两位数,因此s有两种状态即可0: digit = x[3:0];1: digit = x[7:4];default: digit = x[11:8];endcase// 选择数码管always @ ( * )begin an = 2'b00;  an[s] = 1;end// 7段解码器:hex7segalways @ ( * )case (digit)0: a_to_g = 7'b1111110;1: a_to_g = 7'b0110000;2: a_to_g = 7'b1101101;3: a_to_g = 7'b1111001;4: a_to_g = 7'b0110011;5: a_to_g = 7'b1011011;6: a_to_g = 7'b1011111;7: a_to_g = 7'b1110000;8: a_to_g = 7'b1111111;9: a_to_g = 7'b1111011;'hA: a_to_g = 7'b1110111;'hB: a_to_g = 7'b0011111;'hC: a_to_g = 7'b1001110;'hD: a_to_g = 7'b0111101;'hE: a_to_g = 7'b1001111;'hF: a_to_g = 7'b1000111;default: a_to_g = 7'b0000000;  // 空白endcase
endmodule
  • 引脚约束:
set_property IOSTANDARD LVCMOS33 [get_ports zero1]
set_property IOSTANDARD LVCMOS33 [get_ports {a_to_g0[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {a_to_g0[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {a_to_g0[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {a_to_g0[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {a_to_g0[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {a_to_g0[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {a_to_g0[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {a_to_g1[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {a_to_g1[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {a_to_g1[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {a_to_g1[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {a_to_g1[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {a_to_g1[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {a_to_g1[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {an0[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {an0[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {an1[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {an1[0]}]
set_property PACKAGE_PIN P5 [get_ports zero1]
set_property PACKAGE_PIN P4 [get_ports zero2]
set_property IOSTANDARD LVCMOS33 [get_ports cp]
set_property IOSTANDARD LVCMOS33 [get_ports green1]
set_property IOSTANDARD LVCMOS33 [get_ports red1]
set_property IOSTANDARD LVCMOS33 [get_ports green2]
set_property IOSTANDARD LVCMOS33 [get_ports red2]
set_property IOSTANDARD LVCMOS33 [get_ports yellow2]
set_property IOSTANDARD LVCMOS33 [get_ports yellow1]
set_property IOSTANDARD LVCMOS33 [get_ports zero2]
set_property PACKAGE_PIN P17 [get_ports cp]
set_property PACKAGE_PIN J3 [get_ports red1]
set_property PACKAGE_PIN J2 [get_ports yellow1]
set_property PACKAGE_PIN K2 [get_ports green1]
set_property PACKAGE_PIN L1 [get_ports red2]
set_property PACKAGE_PIN M1 [get_ports yellow2]
set_property PACKAGE_PIN K3 [get_ports green2]
set_property PACKAGE_PIN C1 [get_ports {an0[1]}]
set_property PACKAGE_PIN H1 [get_ports {an0[0]}]
set_property PACKAGE_PIN E1 [get_ports {an1[1]}]
set_property PACKAGE_PIN G6 [get_ports {an1[0]}]
set_property PACKAGE_PIN B4 [get_ports {a_to_g0[6]}]
set_property PACKAGE_PIN A4 [get_ports {a_to_g0[5]}]
set_property PACKAGE_PIN A3 [get_ports {a_to_g0[4]}]
set_property PACKAGE_PIN B1 [get_ports {a_to_g0[3]}]
set_property PACKAGE_PIN A1 [get_ports {a_to_g0[2]}]
set_property PACKAGE_PIN B3 [get_ports {a_to_g0[1]}]
set_property PACKAGE_PIN B2 [get_ports {a_to_g0[0]}]
set_property PACKAGE_PIN D4 [get_ports {a_to_g1[6]}]
set_property PACKAGE_PIN E3 [get_ports {a_to_g1[5]}]
set_property PACKAGE_PIN D3 [get_ports {a_to_g1[4]}]
set_property PACKAGE_PIN F4 [get_ports {a_to_g1[3]}]
set_property PACKAGE_PIN F3 [get_ports {a_to_g1[2]}]
set_property PACKAGE_PIN E2 [get_ports {a_to_g1[1]}]
set_property PACKAGE_PIN D2 [get_ports {a_to_g1[0]}]
  • 效果图展示:
    初始状态
  • 视频展示:

视频链接如下所示:
视频展示

项目在Vivado运行一切正常,实验所用设备为EGO1开发板,源文件链接如下:(bit流文件与记忆文件均已生成,在traffic文件中,下载后可正常测试)

  • 链接

百度网盘链接分享
提取码:0000
–来自百度网盘超级会员V4的分享

首次blog,多多关照!!!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图解在VC里使用graphics.h绘图(类似TC)

1 www.easyx.cn 下载 EasyX 库 我下的2014;解压后如下图&#xff1b; 2 根据自己的VC 版本进行安装 3 在控制台画一个圆 #include <graphics.h> // 引用图形库 #include <conio.h> void main() {initgraph(640, 480); // 初始化绘图窗口circle(200, 200, 100); //…

可编程逻辑器件之汽车仪表盘设计

一、 实验目标 熟练掌握 Verilog HDL 硬件描述语言&#xff0c;能够在实际工程中熟练使用Quartus II 软件进行可编程逻辑器件的基本开发&#xff0c; 能够熟练使用 Modelsim 软件进行系统的功能仿真验证&#xff0c; 能够正确的使用实验室各种实验仪器设备如示波器、信号发生器…

TeeChart替代品,MFC下好用的高速绘图控件-(Hight-Speed Charting)

相关链接&#xff1a; C GUI 绘图控件目录 MFC VS2010 使用TeeChart绘图控件 - 之一 - 控件和类的导入VS2010 使用TeeChart绘图控件 - 之二 - 绘制图形&#xff08;折线图&#xff0c;柱状图&#xff09;TeeChart绘图控件 - 之三 - 提高绘图的效率MFC下好用的高速绘图控件-(Hi…

PLC设计交通信号灯

一、实验目的 1、熟练掌握AB的PLC编程软件CCW的使用 2、加深对PLC编程原理的理解 3、了解PLC的实际使用过程 二、实验内容及要求 三、实验程序及结果 实验程序: 1、首先设置一个启动按钮DI02&#xff0c;一个暂停复位按钮DI03&#xff0c;设置中间变量M0自锁电路。 2、当启动…

Qt自绘汽车仪表盘-1

一、效果图 二、效果图拆解 根据效果图上显示&#xff0c;最外层一共是13个小点&#xff0c;这些小点有点像子弹头一样&#xff0c;头部是尖的&#xff0c;底部是平的。靠近一层是表盘码值表&#xff0c;数字是的底部朝向表盘圆心。再近一层是一个渐变圆环&#xff0c;颜色有黑…

【车牌识别】模板匹配新能源、轿车、货车车牌识别【含GUI Matlab源码 2169期】

⛄一、模板匹配车牌识别简介 1 系统整体设计 车牌识别系统包括4个步骤:车牌定位 (包括识别图像中的车牌位置并将其分割) 、图像处理、字符分割与字符识别, 如图1所示。车牌定位的主要功能是从图像中可能包含车牌的候选区域中定位车牌区域;图像处理的功能是强化车牌关键特征;字…

做毕业设计,前端部分你需要掌握的6个核心技能

其实前端新手如果想要自己实现一套毕业设计项目并非简单的事,因为之前很多人一直还停留在知识点的阶段,而且管理系统和C端网站都需要开发,但现在需要点连成线了。所以在启动项目开发之前呢,针对前端部分,我列举一些非常必要的前端核心技能,希望你已掌握。 《Vue + Sprin…

【中创】ChatGPT技术被滥用,安全治理亟需政府、企业共同努力!

眼见为实&#xff1f;耳听为真&#xff1f;当心AI诈骗&#xff01; 只需要提供一张带脸的照片&#xff0c;就可以置换成明星&#xff0c;拟真度非常高&#xff0c;毫无违和感&#xff0c;一个软件就能直接将杨颖整成迪丽热巴&#xff01; 只要迪丽热巴的泪痣和嘴&#xff1f;没…

不信谣、不传谣?ChatGPT 技术滥用,浙江首个虚假制作团伙被抓获

根据绍兴公安群蓝星官方公众号的消息&#xff0c;绍兴上虞区公安分局最近成功打击了一个使用 ChatGPT技术制作虚假视频并在网络上散播谣言的犯罪团伙&#xff0c;已逮捕了3名嫌疑人。这是浙江省首个虚假视频制作团伙案件。 6月2日&#xff0c;上虞警方在网络巡查中注意到一个名…

医院在线预约挂号系统开源

小程序部分 开源地址&#xff1a;https://github.com/moyuc1966/Registerhttps://github.com/moyuc1966/Register 整体功能有&#xff1a; 用户注册部分、就诊人部分、就诊人管理、对预约记录&#xff0c;缴费充值退款记录的管理 意见反馈、医院公告&#xff08;文章&#x…

ChatGPT常用的指令(十二)——AI辅助医生、厨师、机械师

系列文章目录 内容翻译自&#xff1a;https://github.com/f/awesome-chatgpt-prompts&#xff0c;并加入自己的实践内容 1、 ChatGPT常用的提示语&#xff08;prompts&#xff09;系列一 2、 ChatGPT常用的提示语&#xff08;prompts&#xff09;系列二 3、 ChatGPT常用的提示语…

AI与医学辅助诊断

人工智能一词越来越频繁的出现在日常生活中。一种事物的时髦&#xff0c;必然有其背后的原因。而对于这样一个大的话题&#xff0c;从整体上来叙述总显得有些不接地气。作为跟AI沾过一些边的博主将以自己接触的方面来发表一点看法。 首先介绍一下&#xff0c;博主在研究生期间从…

马斯克亲吻美女机器人,AI时代要来了吗?

马斯克亲了一个机器人&#xff01; 你印象中的机器人是长什么样的呢&#xff1f;钢铁骨骼&#xff0c;机械四肢&#xff1f;一拳下去梆梆硬&#xff0c;我们自己还反而痛得飞起的材质&#xff1f;运气好的话有些机器人长得跟人类一样有脑袋有四肢、有个人体的大概轮廓&#xf…

Chat GPT原理

ChatGPT一经发布就在科技圈火得不行&#xff0c;这两天也是被传得神乎其神&#xff0c;听说它写得了代码、改得了 Bug&#xff0c;小说、段子统统不再话下&#xff01;那他到底是怎么训练成现在这样的呢&#xff1f;本文介绍李宏毅老师的分析。 那么接下来我们就来介绍Chat GPT…

探索 Apple 公司股价数据-Python实现

探索 Apple 公司股价数据 环境和数据题目代码详解这个例子比较适合数据挖掘入门一段时间。都还是比较基础的一些函数的应用。 环境和数据 这里使用的是pycharm2020.1.1 x64的 一般都是用的是Python 3.7.3 一些包就自己看着下 处理的数据 -appl_1980_2014.csv,如下图 题目 …

ChatGPT老板的核能公司要上市了,估值61亿

尚恩 发自 凹非寺量子位 | 公众号 QbitAI OpenAI CEO的核能公司&#xff0c;宣布上市&#xff01; Sam Altman旗下的核裂变初创公司Oklo Inc.已官宣&#xff0c;与空壳公司AltC Acquisition Corp.达成最终业务合并协议。 合并交易预计将于今年底或2024年初完成&#xff0c;合并…

【历史上的今天】2 月 24 日:乔布斯出生;苹果推出 Thunderbolt 接口;WhatsApp 创始人诞生

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2022 年 2 月 24 日&#xff0c;在 2010 年的今天&#xff0c;苹果公司宣布 iTunes 上面的音乐曲目下载量超过了 100 亿首&#xff0c;创下一大辉煌纪录&#xff1b;苹…

[苹果解密]创新是伟大公司诞生的源泉--Apple再度成为美国最大上市公司

近日不论美股还是A股&#xff0c;都是跌落的入水声一片&#xff0c;夹杂着小民的眼泪声和割肉声。但其中也发现了一个令人激动的消息&#xff1a;苹果已经成为美国最大上市公司&#xff01;大概在去年&#xff0c;苹果就已经是美股IT业最大市值的上市公司了&#xff0c;而今天&…

分析师意外下调评级为中性,苹果财报能否改变科技股走向?

新年的投资热情为苹果市值短暂达到3万亿美元铺平了道路&#xff0c;这是有史以来第一家跨过这一门槛的美国公司。尽管许多华尔街分析师和投资者对苹果的评级为看涨&#xff0c;但目前Seeking Alpha的量化评级给苹果的评级为中性(HOLD)。 苹果将于1月27日公布2022财年第一季度财…

苹果收购公司,为什么总是低调而高效---转自百度新闻|DTCHAT

苹果真的太壕了。有多壕&#xff1f;在很多年里面&#xff0c;苹果是全球最值钱的公司。为什么那么值钱&#xff1f;主要是因为它一点也不缺钱。最能存钱截至2022年末&#xff0c;苹果手里的现金、现金等价物和有价证券总价值为1654.5亿美元。那些亏损的企业看到这里&#xff0…