最近ChatGPT大火,成功破圈,到底是什么?怎么使用?
簡單說,它是一個模型,一個語言模型!
它是以對話方式與人進行交互的AI語言模型!
但它能做的事情太多了,可以用它來寫一封請假郵件:
image-20221208210153673
還有人用它來學英語、向它提各種問題,甚至可以用它來寫程序,很多軟件工程師都嘗試過用它來寫Python、Java等編程語言,這里我們就不再嘗試了。
作為FPGA工程師,我們肯定想讓它幫我們寫Verilog!看看效果怎么樣?
,時長00:23
[ ]
image-20221208210533770
在代碼后面甚至還有解釋:
image-20221208210631379
完整代碼如下:
// UART Receiver Module
module uart_rx(
input clk,
input rx,
output reg rx_done,
output reg [7:0] rx_data
);
// FSM states
localparam [1:0]
IDLE = 2'b00,
START = 2'b01,
DATA = 2'b10,
STOP = 2'b11;
reg [1:0] state, next_state;
reg [3:0] bit_count;
reg [7:0] rx_shift_reg;
// Initialize outputs
always @* begin
rx_done = 0;
rx_data = 0;
end
// State transition logic
always @(posedge clk) begin
state <= next_state;
end
// State transition function
always @* begin
case (state)
IDLE: begin
if (rx) next_state = START;
else next_state = IDLE;
end
START: begin
if (rx) next_state = DATA;
else next_state = IDLE;
end
DATA: begin
if (bit_count == 0) next_state = STOP;
else if (rx) next_state = DATA;
else next_state = IDLE;
end
STOP: begin
if (rx) next_state = IDLE;
else next_state = STOP;
end
endcase
end
// Output logic
always @* begin
case (state)
IDLE: begin
bit_count = 4;
rx_shift_reg = 0;
end
START: begin
bit_count = 3;
end
DATA: begin
bit_count = bit_count - 1;
rx_shift_reg = {rx_shift_reg[6:0], rx};
end
STOP: begin
rx_done = 1;
rx_data = rx_shift_reg;
end
endcase
end
endmodule
雖然沒有驗證這個功能是否正確,但這個代碼的邏輯看起來應該是沒有錯的。
再寫個稍微復雜一點但仍然是標準的協議:apb轉axi-lite的bridge。
完整代碼很長,我也并沒有驗過,但大概看下來,功能基本都有。
對于過于復雜的,就無能為力了,比如:以太網協議棧。
但有個更有意思的現象,當我第一次讓它寫以太網協議棧時,它提示太難了,寫不出來。
把對話復位后,再讓它寫,它就會寫一個大概的module,里面只有些接口,后面又復位對話后再重新讓它寫了,寫出來的程序就更多了。
說明它的學習能力一直在增長。
可能現在它的功能還并不是很完善,但作為工程師,看到這么強大的功能,不禁有些感慨,我們的核心競爭力是什么?如果真的有一天,AI可以幫我們寫代碼了,我們該去做什么?
(抖個機靈:是不是到時候只需要驗證工程師了?)
最后補充一點,這個網站的注冊是需要一個國外的手機號,可能很多人弄不到,所以,如果你有什么有趣的功能想嘗試,可以跟我聯系,我來幫你試。
-
Verilog
+關注
關注
28文章
1345瀏覽量
109996 -
AI
+關注
關注
87文章
30239瀏覽量
268480 -
代碼
+關注
關注
30文章
4753瀏覽量
68369 -
ChatGPT
+關注
關注
29文章
1549瀏覽量
7509
發布評論請先 登錄
相關推薦
評論