FPGA开发与ARM(单片机)开发的区别

我是同时做过FPGA开发(verilog)与ARM(c)开发,有很多人说学了单片机再学习FPGA会比较好过度。理由是单片机的C语言与FPGA的verilog语言很像。我不太赞成这一个说法,理由是:单片机的C语言是串行执行的,FPGA的verilog是并行执行的。虽然两者看上去语法差不多,但是语言所代表的含义完全不同。C语言最终到芯片中后是二进制代码,verilog语言最终到芯片是电路。举个例子,同样实现两个led灯的闪烁,一个是10hz,一个是5hz。

/********************************************************************************************************************************/

void isr(void){//1ms的中断

static u32 cnt_led1,cnt_led2;

cnt_led1++;

cnt_led2++;

if(cnt_led1>=50)

{

    LED1=~LED1;

    cnt_led1=0;

}

if(cnt_led2>=100)

{

    LED2=~LED2;

    cnt_led2=0;

}

}

int main(void)

{

    INIT_LED();

    INIT_ISR();

   while(1)

   {

 

   }

}

/**********************************************************************************************************************************/

module LED(

CLK,

LED1,

LED2

);

input wire CLK;

output reg LED1=0;

output reg LED2=0;

reg [31:0]cnt1=0;

reg [31:0]cnt2=0;

always@(posedge CLK)//在时钟上升沿干的事情1

begin

    if(cnt1<50*1000*50)begin

        cnt1<=cnt1+1;

    end

    else begin

            LED1<=~LED1;

            cnt1<=0;

    end

end

 

always@(posedge CLK)//在时钟上升沿干的事情2

begin

    if(cnt2<50*1000*100)begin

        cnt2<=cnt2+1;

    end

    else begin

            LED2<=~LED2;

            cnt2<=0;

    end

end

endmodule

/**********************************************************************************************************************************/

可以发现,单片机实现两个“任务”可以用定时器中断实现,本质意义上来说是串行执行。

FPGA实现两个“任务”可以用时钟上升沿触发,而且一个时钟上升沿可以触发多个“任务”。

/**********************************************************************************************************************************/

再举个例子,输出3路12bit的DAC。

/********************************************************************************************/

unsigned int get_dac1;

unsigned int get_dac2;

unsigned int get_dac3;

int main(void)

{

      DAC_INIT();

      while(1){

       *((unsigned int *)DAC1)=get_dac1&0x3ff;//第一步

       *((unsigned int *)DAC2)=get_dac2&0x3ff;//第二步

       *((unsigned int *)DAC3)=get_dac3&0x3ff;//第三步

}

}

/********************************************************************************************/

module OUT_DAC(

CLK,

DAC1,

DAC2,

DAC3,

BUFF_DAC1,

BUFF_DAC2,

BUFF_DAC3

);

input wire [11:0]BUFF_DAC1;

input wire [11:0]BUFF_DAC2;

input wire [11:0]BUFF_DAC3;

output reg [11:0]DAC1;

output reg [11:0]DAC2;

output reg [11:0]DAC3;

always@(posedge CLK)

begin

         DAC1<=BUFF_DAC1;//第一步

         DAC2<=BUFF_DAC2;//与上一步是同时执行

         DAC3<=BUFF_DAC3;//与上一步是同时执行

end

endmodule

/********************************************************************************************/

从上面的例子我们可以得到:ARM的3个DAC输出是有先后的,FPGA的3个DAC输出是没有先后的。

所以我们常常听到别人说,FPGA比ARM运行速度“快”!

/********************************************************************************************/

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ARM FPGA控制板是一种采用ARM单片机FPGA架构的运动控制卡。它具有高性能和实时性的特点。ARM单片机负责插补核心算法和与上位机的通讯,而FPGA则负责实时功能和IO开关量的扩展。该控制板可以支持多种控制方式,如定量运动、连续运动、回零运动、多轴直线插补、圆弧插补等。它还具有连续插补功能,能够快速、稳定地执行插补运动。最大插补速度可达4MHz。此外,控制板还支持多路光藕隔离输入输出以及编码器输出,可以轻松控制8-64轴的单轴运动。控制板的尺寸较小,仅为5.5 x 6.3,方便使用和安装。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [ARMFPGA运动控制卡 运动控制卡方案 运动控制卡方案 运动控制卡 方案 资料包含此运动控制卡原理图,PCB图...](https://download.csdn.net/download/nbvepoz/88042423)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [小身板,大智慧!iCore2 ARM FPGA 双核心板(原理图、ARM 测试工程、虚拟U盘代码及手册)-电路方案](https://download.csdn.net/download/weixin_38606202/16774379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [开发ARM+FPGA架构运动控制卡 运动控制器](https://blog.csdn.net/2301_76987590/article/details/129487905)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值