0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ChatGPT能否帮助FPGA设计弥补能力的缺失呢?

FPGA技术江湖 来源:OpenFPGA 作者:碎碎思 2023-03-25 15:07 次阅读

科技即生产力,最近,OpenAI 发布了 ChatGPT,在各大论坛和许多网站上受到了广泛关注,ChatGPT是由 OpenAI 提出的大型预训练语言模型,使用了许多深度学习技术,可以生成文本内容,也可以进行文本分类、问答等任务。这么强大的功能,自然会有很多人想着测试它的能力,让它设计生成一些“代码”或者“文章”来了解他的能力,而我注意到很少有人用 Verilog 去试试他的能力,所以今天我们去试一试,最后再看看它未来能为FPGA领域带来什么。

810a4bca-cadb-11ed-bfe3-dac502259ad0.png

ChatGPT简介

FPGA工程师在“软件”方面能力基本都是比较欠缺的,比如一些脚本等,在这方面ChatGPT能否帮助我们弥补这些能力的缺失?

首先我们先简单测试一下GPT的HDL编码能力

下面是GPT给的例程:

GPT BEGIN

以下是一个简单的流水灯程序:

moduleshift_register(
inputclk,
inputreset,
outputreg[7:0]led
);

reg[7:0]shift_reg;

initialbegin
shift_reg=8'h01;
end

always@(posedgeclk)begin
if(reset)begin
shift_reg<= 8'h01;
    end else begin
        shift_reg <= {shift_reg[6:0], shift_reg[7]};
    end
end

assign led = shift_reg;

endmodule

该模块包含一个8位移位寄存器,通过时钟来推进并且每个周期将寄存器向左移动一位。模块还包含一个复位信号,当复位信号为高时,寄存器将重新置为初始状态,并从第二个LED灯开始闪烁。最后,将移位寄存器的输出分配给LED灯。

GPT END

上面就是GPT生成的代码,效果很好,基本功能实现,但是上面代码不能综合,有点小BUG,比较简单,大家自己可以试着看看有什么问题。

接下来我们测试一个复杂的代码:

GPT BEGIN

以下是一个简单的Verilog代码实现HDB3编码器和解码器。代码假定输入信号是一个序列,而不是一个单独的位。

modulehdb3_encoder(inputclk,inputrst,input[7:0]data_in,outputreg[7:0]tx_out);

reg[3:0]polarity;
reg[3:0]zero_count;

always@(posedgeclk)begin
if(rst)begin
tx_out<= 8'b00000000;
        polarity <= 4'b0000;
        zero_count <= 4'b0000;
    end else begin
        if (data_in == 8'b00000000) begin
            zero_count <= zero_count + 1;
            if (zero_count == 4) begin
                if (polarity == 4'b0011) begin  // Positive pulse
                    tx_out <= 8'b00000010;
                    polarity <= 4'b1100;
                end else begin  // Negative pulse
                    tx_out <= 8'b00000001;
                    polarity <= 4'b0011;
                end
                zero_count <= 0;
            end else begin
                tx_out <= 8'b00000000;
            end
        end else begin
            if (data_in[7] == 1) begin  // Ones count as positive
                if (polarity == 4'b1100) begin  // Positive pulse
                    tx_out <= 8'b00000010;
                    polarity <= 4'b0011;
                end else begin  // No pulse
                    tx_out <= data_in;
                    polarity <= polarity + 1;
                end
                zero_count <= 0;
            end else begin  // Zeros alternate
                if (polarity == 4'b0011) begin  // Negative pulse
                    tx_out <= 8'b00000001;
                    polarity <= 4'b1100;
                end else begin  // No pulse
                    tx_out <= data_in;
                    polarity <= polarity + 1;
                end
                zero_count <= 0;
            end
        end
    end
end

endmodule


module hdb3_decoder(
input clk,
input rst,
input [7:0] rx_in,
output reg [7:0] data_out,
output reg valid
);

reg [3:0] polarity;
reg [3:0] zero_count;

always @(posedge clk) begin
    if (rst) begin
        data_out <= 8'b00000000;
        polarity <= 4'b0000;
        zero_count <= 4'b0000;
        valid <= 0;
    end else begin
        if (rx_in == 8'b00000000) begin
            zero_count <= zero_count + 1;
            if (zero_count == 4) begin
                if (polarity == 4'b0011) begin  // Positive pulse
                    data_out <= 8'b00000000;
                    valid <= 1;
                end else if (polarity == 4'b1100) begin  // Negative pulse
                    data_out <= 8'b00000000;
                    valid <= 1;
                end
                polarity <= 4'b0000;
                zero_count <= 0;
            end else begin
                data_out <= 8'b00000000;
                valid <= 0;
            end
        end else begin
            if (rx_in == 8'b00000010) begin  // Positive pulse
                data_out <= 8'b00000000;
                valid <= 1;
                polarity <= 4'b0011;
                zero_count <= 0;
            end else if (rx_in == 8'b00000001) begin  // Negative pulse
                data_out <= 8'b00000000;
                valid <= 1;
                polarity <= 4'b1100;
                zero_count <= 0;
            end else begin
                data_out <= rx_in;
                polarity <= polarity + 1;
                if (polarity == 4'b1111)
                    polarity <= 4'b0000;
                zero_count <= 0;
                valid <= 1;
            end
        end
    end
end

endmodule

GPT END

对于刚接触这个行业的人,上面的代码足够给初学者提供一个代码思路,顺着这个思路进行修改理解,很快就可以实现一个复杂一点的Verilog代码。

我们在使用Vivado时候,TCL也是一个重要的脚本语言,需要我们熟练掌握,首先我们让GPT给我们出一个无GUI创建工程的示例:

GPT BEGIN

以下是一个简单的Vivado无GUI的TCL工程脚本示例:

#设置工程名和工作目录
setproject_name"my_project"
setproject_dir"/path/to/project/dir"

#创建工程
create_project$project_name$project_dir-partxcku115-flvb2104-2-e-force

#添加源文件
add_files-norecurse/path/to/source/file1.v
add_files-norecurse/path/to/source/file2.v

#设置仿真模块
set_propertysimulator_languageVerilog[current_project]
set_propertytop_modulemy_top_module[current_fileset]

#运行综合
synth_design

#运行实现
implement_design

#导出比特文件
write_bitstream-force/path/to/bitstream_file.bit

这只是一个基本示例,实际的脚本可能需要更多的命令和参数来完成所需的操作。您可以参考Vivado的TCL命令参考手册来学习更多使用方式。

GPT END

基本命令都是有的,每一个命令的中文注释都有,真的方便极了。

此外,还尝试了写小作文,爬虫等都是可以完成一个完整度较高的答案。

总的来说,ChatGPT 给我留下了深刻的印象,因为它可以生成和迭代代码,就像正在与办公室里的另一位工程师交谈一样。不过它的功能也有限。也就是说,它可以在几分钟内提供一个很好的开发起点和一个可行的框架。

由于GPT的中文训练量远远不及英文的,所以在这方面会有一些欠缺,随着发展的越来越快,以下是本人觉得的发展方向:

首先,ChatGPT可以作为一个问答机器人,对设计人员的问题进行回答。设计人员可以向ChatGPT提问关于FPGA的问题,比如FPGA的官方文档、产品手册、参考设计、IP核等内容,ChatGPT会根据用户提问的问题提供最佳答案,同时在一些FPGA大厂进行训练后的情景肯定完美。这对于刚刚接触FPGA的设计人员来说,肯定是一个非常好的学习工具。

其次,ChatGPT可以协助设计人员进行设计验证和测试。在设计过程中,由于各种器件互相影响,可能会出现很多问题,如电性能等。ChatGPT可以根据设计人员的需求,给出适当的方法和步骤,以协助验证功能、测试性能和诊断问题。此功能可以帮助设计人员提高设计质量、加快设计速度,并避免出现故障。

第三,ChatGPT可以协助设计人员优化设计流程。设计FPGA需要计算资源和时间,设计人员需要花费大量时间来优化设计,例如电路拓扑、时序约束等。ChatGPT可以根据经验、文献和实践,为设计人员提供优化建议,帮助提高设计效率和质量。

最后,ChatGPT还可以协助设计人员进行调试和维护工作。FPGA设计一旦完成,像其他电路一样,也需要进行维护和调试工作,比如在更新版本或漏洞修复时。ChatGPT可以为设计人员提供有关这些方面的帮助,从而使他们更好地处理问题。

对于我们个人来说,其实用GPT作为自己的个人助手,平时用来记一些笔记、知识点,都是很完美的“容器”。

总之,ChatGPT作为一款人工智能聊天工具,将来能够为FPGA设计人员提供许多便利。回答问题、协助设计验证和测试、优化设计流程、协助调试和维护。这一切都可以帮助设计人员提高设计质量和效率,节省时间和成本。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA设计
    +关注

    关注

    9

    文章

    428

    浏览量

    26482
  • HDL
    HDL
    +关注

    关注

    8

    文章

    327

    浏览量

    47336
  • OpenAI
    +关注

    关注

    9

    文章

    1042

    浏览量

    6404
  • ChatGPT
    +关注

    关注

    29

    文章

    1548

    浏览量

    7484

原文标题:在FPGA设计中怎么应用ChatGPT?

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA设计中怎么应用ChatGPT

    ,也可以进行文本分类、问答等任务。这么强大的功能,自然会有很多人想着测试它的能力,让它设计生成一些“代码”或者“文章”来了解他的能力,而我注意到很少有人用 Verilog 去试试他的能力,所以今天我们去试一试,最后再看看它未来能
    的头像 发表于 03-14 10:03 1822次阅读

    探索ChatGPT的信息抽取能力

    通过人工检查ChatGPT的回复,发现ChatGPT倾向于识别比标注的跨度更长的sapn,以更接近人类的偏好。因此,之前的硬匹配(hard-matching)策略可能不适合如ChatGPT的LLM,所以本文提出了一种软匹配(so
    的头像 发表于 06-01 14:45 1126次阅读
    探索<b class='flag-5'>ChatGPT</b>的信息抽取<b class='flag-5'>能力</b>

    ChatGPT炒热GPU,ASIC和FPGA能否分一杯羹?

    有着不小需求的应用来说,ASIC和FPGA是否也能借上这股东风?   不同硬件的成本对比   在机器学习推理场景中,除了GPU外,还有一大通用AI硬件适合这一负载,那就是FPGA。与GPU一样,在技术和算法还未成熟且仍在打磨阶
    的头像 发表于 02-22 09:23 5877次阅读

    【国产FPGA+OMAPL138开发板体验】(原创)6.FPGA连接ChatGPT 4

    OMAP-L138(定点/浮点DSP C674x+ARM9)+ FPGA处理器的开发板。 编写一个用于FPGA访问ChatGPT 4的程序代码是一个相当复杂的任务,涉及到硬件设计、网络通信、数据处理等多个
    发表于 02-14 21:58

    FPGA设计中是否可以应用ChatGPT生成想要的程序

    当下AI人工智能崛起,很多开发领域都可看到ChatGPT的身影,FPGA设计中,是否也可以用ChatGPT辅助设计
    发表于 03-28 23:41

    OpenAI 深夜抛出王炸 “ChatGPT- 4o”, “她” 来了

    和情绪的选项 实时视频捕捉,在与ChatGPT 交互时无需发送照片 有能力在会议和视频通话中提供协助 发布会为其潜在影响提供了清晰的愿景。随着企业驾驭不断变化的技术领域,拥抱ChatGPT-4o对于实现持续增长和创新至关重要。
    发表于 05-27 15:43

    新手求帮助FPGA开发版上能否装有ADDA集成芯片?市面上有没有这样的开发板?

    同题,FPGA开发版上能否装有ADDA集成芯片?市面上有没有这样的开发板?求大神帮助
    发表于 10-16 09:10

    ARM在片上资源确定的情况下能否具备类似FPGA自由分配管脚功能的能力

    ARM在片上资源确定的情况下,能否具备类似FPGA自由分配管脚功能的能力?比如说集成UART的TX/RX可以分配到任意管脚,而并不是只能分配到指定的几个管脚?谢谢
    发表于 08-01 14:17

    在IC设计/验证中怎么应用ChatGPT

    好用,那么对于工程师群体应该帮助很大!按照官网的介绍,工程师们完全可以把所要实现的逻辑步骤用自然语言描述清楚,然后ChatGPT会翻译出满足相应要求的代码进行实现。话不多说,如图2直接上干货进行测试!图
    发表于 02-21 15:16

    科技大厂竞逐AIGC,中国的ChatGPT在哪?

    来看,国内大模型开发厂商一是布局以大模型为基础的通用对话、生成等能力;二是将其能力整合到搜索引擎、智能客服、智能音箱等产品线中;三是通过能力调用为中小企业满足具体场景落地需求。”董晓飞说。 随着
    发表于 03-03 14:28

    请问变频器能否弥补异步电机的滑差?

    变频器能否弥补异步电机的滑差?
    发表于 11-20 07:27

    10分钟教你如何ChatGPT最详细注册教程

    ChatGPT 以其强大的信息整合和对话能力惊艳了全球,在自然语言处理上面表现出了惊人的能力。这么强大的工具我们都想体验一下,那么  ChatGPT  怎么用
    发表于 02-08 14:46 108次下载

    微信接入ChatGPT 利用ChatGPT的对话能力

      当前ChatGPT是一个爆火的项目,近来浏览 Github 的时候,发现一个好玩的项目:微信接入ChatGPT,利用ChatGPT的对话能力,实现微信的自动聊天回复。   在
    发表于 02-13 10:31 3次下载
    微信接入<b class='flag-5'>ChatGPT</b> 利用<b class='flag-5'>ChatGPT</b>的对话<b class='flag-5'>能力</b>

    ChatGPT处理文本分段任务的能力如何

    作为一个兼具分析&生成能力的AI,ChatGPT最近一段时间热度都非常高,它的确颠覆了很多人的认知,它的出现一定程度上是强人工智能的出现。
    发表于 02-16 14:27 2269次阅读

    ChatGPT军事运用的几个误区

    判断人与机器的区别,最经典的测试是图灵测试。让无关的第三人,从人与机器的对话中,能否准确区分于人与机器。如果把这一测试应于ChatGPT与人类之间,或许能够骗过第三人,把机器看作人。可见,ChatGPT在自然语言处理方面的杰出
    的头像 发表于 05-17 09:44 741次阅读