搜索
bottom↓
回复: 109

调查: 如开源项目 大家对哪款cpu 在FPGA里实现感兴趣  8051 AVR PIC 还是别的 IP c

[复制链接]

出0入25汤圆

发表于 2010-12-24 09:25:10 | 显示全部楼层 |阅读模式
1) 我在fpga中跑通过8051, AVR, PIC 的 开源CPU核, 8051站的资源大,与or1200 相当,AVR  次之, PIC 最少

   我想知道大家最关心的是什么,速度,面积 性能 实用价值 等,请大家积极发贴

   我想就此做过个 大家都能参与 的开源项目.

2) 用FPGA驱动LCD屏,VGA显示,SD卡读写,摄像头的使用 哪个更实用 值得去做 ,这方面我都有尝试

   我想就此做过个 大家都能参与 的开源项目.

3) 做一款低档 示波表 + 频率表 + 逻辑分析仪( 采用IP复用技术,一次加载只有一种功能)  ,直接用ep1c3 fpga完成采样及显示(不用nios 或or1200 ,想用 PIC 软核 做些辅助 )模电部分参考魏老师的
   AD 采用tlc5510 或tlc5540 总成本在120左右, 不知可行吗

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-12-24 10:46:36 | 显示全部楼层
1) avr吧 ,资源越少越好
2)摄像头。。。我也在做,不过遇到些问题。
3)支持!

出0入0汤圆

发表于 2010-12-24 11:04:45 | 显示全部楼层
顶楼主...跟你学....

出0入0汤圆

发表于 2010-12-24 11:19:42 | 显示全部楼层
我也顶楼主,我的期待是:
1.or1200
2.TFT LCD,能驱动800x480就行了,65535色就可以了。
3.SD卡
4.SDRAM,如果有可能,只采用1片SDRAM,16bit总线
5.CAN
6.适当的UART,SPI。
7.最好采用TQFP144的ProASIC3,不用配置芯片,加密性能好。我不喜欢封装太大的芯片。

出0入0汤圆

发表于 2010-12-24 11:23:20 | 显示全部楼层
都没兴趣……可编程逻辑又不便宜,我干嘛不买个片子放那儿……让PLD干它该干的事

出0入0汤圆

发表于 2010-12-24 11:29:13 | 显示全部楼层
摄像头。

出0入0汤圆

发表于 2010-12-24 11:34:24 | 显示全部楼层
我看不如外配CM3好

出0入25汤圆

 楼主| 发表于 2010-12-24 12:11:12 | 显示全部楼层
cfqxdgr : 你可能不知道 pic core 在fpga 才几百个le ,速度 > 80Mhz 优化的好可以到100Mhz
          1k的fpga 有的才10元.另一个优点是可任意定制,包括几个pic同时跑

出0入0汤圆

发表于 2010-12-24 12:17:42 | 显示全部楼层
回复【7楼】hxl_led
cfqxdgr : 你可能不知道 pic core 在fpga 才几百个le ,速度 > 80mhz 优化的好可以到100mhz  
          1k的fpga 有的才10元.另一个优点是可任意定制,包括几个pic同时跑
-----------------------------------------------------------------------

但是有MCU和,还要有RAM才好跑,RAM大的FPGA很贵

出0入0汤圆

发表于 2010-12-24 12:19:24 | 显示全部楼层
51核占内存的的确是大,期待摄像头

出0入0汤圆

发表于 2010-12-24 12:59:41 | 显示全部楼层
回复【8楼】888888888888
回复【7楼】hxl_led  
cfqxdgr : 你可能不知道 pic core 在fpga 才几百个le ,速度 > 80mhz 优化的好可以到100mhz   
          1k的fpga 有的才10元.另一个优点是可任意定制,包括几个pic同时跑
-----------------------------------------------------------------------
但是有mcu和,还要有ram才好跑,ram大的fpga很贵
-----------------------------------------------------------------------

同意,如果能省下个外设的RAMORDRAM,单一个FPGA做,那是多爽的事,现在流行越小越好了

出0入25汤圆

 楼主| 发表于 2010-12-24 13:27:25 | 显示全部楼层
闲话, 用过好几款单片机及ARM,最痛苦的是不停的选型,不停的学习,多年过去了,才知道商业蒙蔽我们的视野,
每家大公司都在夸自家芯片的卖点...跑题了,此话题不再聊(修该过 )

出0入0汤圆

发表于 2010-12-24 13:34:53 | 显示全部楼层
to  hxl_led:
"44b0 2410 2440 6410 9200 9260 9315  用arm的对这不陌生吧,我也是一路走过"

你这种走法让人很看不懂啊,你这是在做什么东东啊,44b0和6410肯定应用于不同的领域啊。
就算你是用FPGA,如果工作的内容和领域老是换的话,你也一样得一直学习啊。。。。。。。。。

出0入0汤圆

发表于 2010-12-24 13:36:37 | 显示全部楼层
我不会FPGA,但是,我觉的要是驱动TFT的话,用CPLD就好吧,没必要用FPGA啊,

我听人家说,FPGA主要用于告诉通信和图像处理,不知道对不对???

出0入25汤圆

 楼主| 发表于 2010-12-24 13:43:18 | 显示全部楼层
XIAN1987 :做产品受制于芯片,avr停产,我们用就改用别的对吧, 速度低就得用高的对吧,没有LAN的如需用,你得改芯片吧 三星的不是工业级,
     如需用工业级,你得用atmel工业级的吧 等

出50入0汤圆

发表于 2010-12-24 13:50:02 | 显示全部楼层
选简单些的内核,通过项目能快速、容易的掌握其工作原理。

出0入0汤圆

发表于 2010-12-24 15:28:22 | 显示全部楼层
支持!严重支持!
想法不错,结合项目展开可能更容易接受。如果,项目中涉及接口越多,大家越能学习到更多的东西,但可以逐步扩增加,这样不至于太难打击大家信心。另外,建议楼主开一个博客,定期更新进度,共享一些思路,这样可能更好写!

出0入0汤圆

发表于 2010-12-24 16:26:21 | 显示全部楼层
cyclone i ii iii,spartan 3 spartan 3e,max3000,max7000,maxii,vitex5我都用过,本身我是做硬件设计的,这些系列选型的时候我都快把手册背下来了,里面有多少资源我熟的很。楼主你说PIC_CORE 才几百LE,但这仅仅是个Core,你还要加外设,你还要外部存储器,你算算,以你自己需要的外设和存储器,放到FPGA/CPLD里面,跟真的买个片子比,谁花的钱多?另外,多个PIC也不如一片cortex m3,或者ARM9跑的快。所以我觉得你研究它在学习FPGA上意义不小,工程意义等于零

出0入0汤圆

发表于 2010-12-24 17:26:33 | 显示全部楼层
回复【17楼】cfqxdgr
cyclone i ii iii,spartan 3 spartan 3e,max3000,max7000,maxii,vitex5我都用过,本身我是做硬件设计的,这些系列选型的时候我都快把手册背下来了,里面有多少资源我熟的很。楼主你说pic_core 才几百le,但这仅仅是个core,你还要加外设,你还要外部存储器,你算算,以你自己需要的外设和存储器,放到fpga/cpld里面,跟真的买个片子比,谁花的钱多?另外,多个pic也不如一片cortex m3,或者arm9跑的快。所以我觉得你研究它在学习fpga上意义不小,工程意义等于零
-----------------------------------------------------------------------

楼主主要是挖一口井,水嘛,要看大家怎么来引

出0入0汤圆

发表于 2010-12-24 17:39:24 | 显示全部楼层
有好些东西是比pic_core要费资源的多的,比如LAN MAC等。我认为FPGA最适合做的是高速数据处理,不要用它代替一些很便宜的片子,因为它本来就贵,贵就要做出更贵的东西来,体现在附加值,而不是向单片机靠拢

出0入25汤圆

 楼主| 发表于 2010-12-24 19:39:26 | 显示全部楼层
cfqxdgr : 我不太了解pic的价格, 16c54 5元左右吧, 500 LE也就 6元左右,1k的fpga 有的才10元,只有同等对比
          才有意义,加上MAC的cortex m3 价格是多少,我想30元肯定买不到. 我用2k左右的LE 做了个千兆网收发
          市场上你很难卖到带千兆MAC的ARM, 每种器件都有优缺点,取长补短,才是好的做法

出0入0汤圆

发表于 2010-12-24 20:02:09 | 显示全部楼层
回复【20楼】hxl_led  
-----------------------------------------------------------------------

能不能推荐下那两款便宜的?

如果逻辑和并行比较多而cpu只作为辅助的话肯定优先选择fpga

另外,opencore上的avr核稳定不

出0入0汤圆

发表于 2010-12-24 20:08:54 | 显示全部楼层
对,取长补短而不是合而为一这就是我的意思,每种片子都有自己的用途。我看你发的贴,对你研究开源核心很佩服。偏巧我正好最近看了看千兆网,首先千兆网在ARM上就没啥意思,本身处理能力就没那么大,所以基本ARM9带的都是10/100MAC。你用2kLE也就是能实现收发功能吧?能做交换吗?能对数据进行进一步的处理吗?

出0入0汤圆

发表于 2010-12-24 20:41:15 | 显示全部楼层
期待2. FPGA+LCD+SD+摄像头

出0入0汤圆

发表于 2010-12-24 21:09:18 | 显示全部楼层
fpga内跑什么51,pic之类,个人认为实际价值是零,除非只是学学技术
ls说在fpga内做千兆以太网,这个说的也太容易了吧,这个可不是谁都能做的,你自己做?或者用opencore上的ip?你敢做,我却不敢用,稳定性能保证?可靠性能保证?

出0入0汤圆

发表于 2010-12-24 21:16:51 | 显示全部楼层
回复【24楼】bluehacker  
-----------------------------------------------------------------------

如果前面本来就有大量逻辑需要单片机而fpga用了还有剩余,是用fpga做单片机还是再按个?

出0入0汤圆

发表于 2010-12-24 21:27:45 | 显示全部楼层
你编译器什么的也打算自己搞么

出0入0汤圆

发表于 2010-12-24 21:40:48 | 显示全部楼层
手里有玩具,却不知道怎么玩,怪不得爱因斯坦说那什么最重要了

出0入25汤圆

 楼主| 发表于 2010-12-24 22:01:59 | 显示全部楼层
bluehacker : 千兆网MAC是我根据网上的资料改写的,不是用opencore上的 IP core
             协议包括MAC + ARP + UDP 才2k 多一点
     
             你以为我是在吹吗 ,我贴个模块,给大家参考一下,你是个内行,你看看

module gisend(
        clk125,
        rst,
        mode,
        empty,
        headadd,
        length,
        rd,
        datain,
        addr,
        txd,
        tx_en,
        tx_er,       
        col,
        crs,
        tran_ok,
        late_col,
        ex_col       
        );
       
    input clk125;
    input rst;
    input mode;
   
    input empty;
    input headadd;
    input[9:0] length;
    output rd;
    reg rd;
    input[7:0] datain;
    output[10:0] addr;
    reg[10:0] addr;
   
    output[7:0] txd;  
    output tx_en;
    reg tx_en;
    output tx_er;
    reg tx_er;
   
   
    input col;
    input crs;
   
    output tran_ok;
    reg tran_ok;
    output late_col;
    reg late_col;
    output ex_col;
    reg ex_col;
   
   
    reg[9:0] counter;
    reg[9:0] j_counter;   
    reg[3:0] jam_number;
    reg[3:0] busy_counter;
    reg out_jam;
    reg[3:0] over_counter;
   
    reg[8:0] current;
    reg[8:0] next;
   
    parameter IDLE=1, RD=2, GET=4, LOAD=8,
              SEND=16, SEND_E=32, JAM=64, OVER=128,
              BUSY=256;

wire[9:0] length_a;
assign length_a = length + 1'b1;

assign txd=datain;            
always@(current or crs or empty or mode or col or length or counter
        or busy_counter or jam_number or out_jam or over_counter)
begin
        next=9'bxxxx_xxxx_x;
        case(current)
        IDLE: begin
                if(!empty)
                next=RD;
                else
                next=IDLE;
        end
        RD: next=GET;
        GET: next=LOAD;
        LOAD: begin
                if(!mode&&crs)
                next=BUSY;       
                else
                next=SEND;
        end
        BUSY: begin
                if(busy_counter==15&&!crs)
                next=SEND;
                else
                next=BUSY;
        end
        SEND: begin
                if(mode) begin
                        if(length_a ==counter)
                        next=OVER;
                        else
                        next=SEND;
                end
                else begin
                        if(col)
                        next=JAM;
                        else if(length==counter) begin
                                if(length>961)
                                next=OVER;
                                else
                                next=SEND_E;
                        end
                        else
                        next=SEND;
                end
        end
        SEND_E: begin
                if(counter==961)
                next=OVER;
                else
                next=SEND_E;
        end
        JAM: begin
                if(out_jam) begin
                        if(jam_number==15)
                        next=IDLE;
                        else
                        next=LOAD;
                end
                else
                next=JAM;
        end
        OVER: begin
                if(over_counter==11)
                next=IDLE;
                else
                next=OVER;
        end
        default: next=IDLE;
        endcase
end
               
always@(posedge clk125 or negedge rst)
begin
        if(!rst) current<=IDLE;
        else current<=next;
end

always@(posedge clk125 or negedge rst)
begin
        if(!rst) counter<=10'h000;
        else begin
                case(next)
                SEND,
                SEND_E: counter<=counter+1'b1;
                default: counter<=10'h000;
                endcase
        end
end

always@(posedge clk125 or negedge rst)
begin
        if(!rst) j_counter<=10'h000;
        else begin
                if(next==JAM)
                j_counter<=j_counter+1'b1;
                else
                j_counter<=10'h000;
        end
end

always@(posedge clk125 or negedge rst)       
begin
        if(!rst) out_jam<=1'b0;
        else begin
                if(next==JAM&&j_counter==10'h3ff)
                out_jam<=1'b1;
                else
                out_jam<=1'b0;
        end
end

always@(posedge clk125 or negedge rst)
begin
        if(!rst) jam_number<=4'h0;
        else begin
                if(next==JAM&&current!=JAM)
                jam_number<=jam_number+1'b1;
                else if(next==IDLE)
                jam_number<=4'h0;
        end
end

always@(posedge clk125 or negedge rst)
begin
        if(!rst) busy_counter<=4'b0000;
        else begin
                if(next==BUSY)
                busy_counter<=busy_counter+1'b1;
                else
                busy_counter<=4'b0000;
        end
end
always@(posedge clk125 or negedge rst)
begin
        if(!rst) over_counter<=4'h0;
        else begin
                if(next==OVER)
                over_counter<=over_counter+1'b1;
                else
                over_counter<=4'h0;
        end
end
always@(posedge clk125 or negedge rst)
begin
        if(!rst) rd<=1'b0;
        else begin
                if(next==RD)
                rd<=1'b1;
                else
                rd<=1'b0;
        end
end
always@(posedge clk125 or negedge rst)
begin
        if(!rst) addr<=11'b0000_0000_000;
        else begin
                case(next)
                LOAD: addr<={headadd,10'h000};
                SEND: addr<=addr+1'b1;
                default: addr<=11'b0000_0000_000;
                endcase
        end
end

always@(posedge clk125 or negedge rst)
begin
        if(!rst) begin
                tx_en<=1'b0;       
        end
        else begin
                case(next)
                SEND:begin
                        tx_en<=1'b1;
                end
                JAM: begin
                        if(j_counter<12)
                        tx_en<=1'b1;
                        else
                        tx_en<=1'b0;
                end
                default: begin
                        tx_en<=1'b0;
                end
                endcase
        end
end

always@(posedge clk125 or negedge rst)
begin
        if(!rst) tx_er<=1'b0;
        else begin
                if(next==SEND_E)
                tx_er<=1'b1;
                else
                tx_er<=1'b0;
        end
end
always@(posedge clk125 or negedge rst)
begin
        if(!rst) begin
                tran_ok<=1'b0;
                late_col<=1'b0;
                ex_col<=1'b0;
        end
        else begin
                if(next==OVER&&current!=OVER)
                tran_ok<=1'b1;
                else
                tran_ok<=1'b0;
               
                if(next==JAM&&current!=JAM)
                late_col<=1'b1;
                else
                late_col<=1'b0;
               
                if(next==JAM&&current!=JAM&&jam_number==14)
                ex_col<=1'b1;
                else
                ex_col<=1'b0;
        end
end
endmodule

出0入25汤圆

 楼主| 发表于 2010-12-24 22:20:39 | 显示全部楼层
我本意想找志同道合的朋友,一块玩玩fpga , 并不是 好为人师,无言了,看看别的朋友建议,再决定

出0入0汤圆

发表于 2010-12-25 00:15:09 | 显示全部楼层
回复【29楼】hxl_led
我本意想找志同道合的朋友,一块玩玩fpga , 并不是 好为人师,无言了,看看别的朋友建议,再决定  

-----------------------------------------------------------------------

我也玩FPGA啊,我只是玩啊,可惜跟不上楼主啊,你要慢慢教我们啊,其实楼上的兄弟们也就是在讨论FPGA用在内核的实用性而已,也没什么恶意,因为一直以来,网上都会有这样的见解,包括我自己的,FPGA只适合贵,高速,并行上有所作为,而在做内核上面,很多人都以为只是炫一下而已,并无多大用途,不过呢,在FPGA上搞些内核,确实感觉很爽,很好玩

出0入0汤圆

发表于 2010-12-25 00:16:15 | 显示全部楼层
建议楼主开个博客!针对 8051 AVR PIC 中的一款加一些常用的外设IPcore进行讲解,楼主的资料很有意义,只有这样学习,才能使我们搞技术的人真正学习到FPGA!支持楼主

出0入0汤圆

发表于 2010-12-25 00:22:56 | 显示全部楼层
支持这个:直接用ep1c3 fpga完成

好像这个ic见到很多使用的,

出0入0汤圆

发表于 2010-12-25 00:44:06 | 显示全部楼层
EP1C3很便宜,3000LE,而且有小封装,相对来说,Altera的下载线最便宜

出0入0汤圆

发表于 2010-12-25 09:28:48 | 显示全部楼层
学习思路

出0入0汤圆

发表于 2010-12-25 09:55:22 | 显示全部楼层
楼主的意思可能是让大家学习学习,而并不是要应用于实际工程项目中。我觉得最主要的是要有详细的开发文档,而不是一堆代码,这样才有利于大家的学习交流。

出0入0汤圆

发表于 2010-12-25 11:10:44 | 显示全部楼层
回复【20楼】hxl_led  
cfqxdgr : 我不太了解pic的价格, 16c54 5元左右吧, 500 le也就 6元左右,1k的fpga 有的才10元,只有同等对比
          才有意义,加上mac的cortex m3 价格是多少,我想30元肯定买不到. 我用2k左右的le 做了个千兆网收发
          市场上你很难卖到带千兆mac的arm, 每种器件都有优缺点,取长补短,才是好的做法
-----------------------------------------------------------------------

你们的产品销量很大么难道,差十几二十块都不行?
不差钱就自己开芯片吧

出0入0汤圆

发表于 2010-12-25 13:08:16 | 显示全部楼层
回复【楼主位】hxl_led  
1) 我在fpga中跑通过8051, avr, pic 的 开源cpu核, 8051站的资源大,与or1200 相当,avr  次之, pic 最少
   我想知道大家最关心的是什么,速度,面积 性能 实用价值 等,请大家积极发贴
   我想就此做过个 大家都能参与 的开源项目.
2) 用fpga驱动lcd屏,vga显示,sd卡读写,摄像头的使用 哪个更实用 值得去做 ,这方面我都有尝试
   我想就此做过个 大家都能参与 的开源项目.
3) 做一款低档 示波表 + 频率表 + 逻辑分析仪( 采用ip复用技术,一次加载只有一种功能)  ,直接用ep1c3 fpga完成采样及显示(不用nios 或or1200 ,想用 pic 软核 做些辅助 )模电部分参考魏老师的
   ad 采用tlc5510 或tlc5540 总成本在120左右, 不知可行吗

-----------------------------------------------------------------------

楼主现实点吧,不是不想做研究,如果你公司项目压的很紧的时候,你有那个时间去研究吗?当然是拿来主义喽。第一,你不是那些叫兽,没有一份稳定收入,吃饱撑的没事干,闲的蛋痛的工作,所以,有超多精力去研究那些东西,第二,工作压力巨大,很多项目等着你完成,连生存都会影响到你的时候,你还有心思去研究吗?

出0入0汤圆

发表于 2010-12-25 15:03:27 | 显示全部楼层
我建议:
    1,8051核。
    2,TFT LCD驱动器,800X480 8位色或者16位色。
  3,2片SDRAM,32位总线。
  4,SD卡
  5,双串口。
  6,GPIO。
  做成核心板,要的人很多,如果有这样的,我就想用来做产品。

出0入0汤圆

发表于 2010-12-25 15:25:18 | 显示全部楼层
跑ARC or ARM内核,再加上些DES/3DES/AES/RSA等加解密引擎。。。

出0入0汤圆

发表于 2010-12-25 15:51:54 | 显示全部楼层
个人看法觉得楼主的研究方向不太对。

13元左右的STM32F103C8T6有M3内核,64K的FLASH,20K的SRAM,4个Timer,2个SPI,2个I2c,3个USART,1个USB,1个CAN,2个ADC,可以ISP、JTAG编程,有加密,有序列号,有开发工具,有AN,有技术支持。不说别的,要用FPGA实现这些硬件要多少LE,值多少RMB?

FPGA主要用于高速、并发处理的场合,CPU处理不了的事情就该FPGA上了,能人所不能才是FPGA价值所在。

出0入0汤圆

发表于 2010-12-25 17:09:44 | 显示全部楼层
顶楼主!
做这些软核的东西才能更了解单片机、arm等数字芯片的一些东西,做完这个也能促进对一些mcu的了解

出0入0汤圆

发表于 2010-12-25 19:58:34 | 显示全部楼层
回复【40楼】qianhng  
-----------------------------------------------------------------------

如果你的系统前端有很大部分要fpga处理的并行高速逻辑,又要有mcu来控制,这些处理器核就有用了。

出0入0汤圆

发表于 2010-12-25 20:14:29 | 显示全部楼层
在FPGA里面跑CPU核主要的应用场合是需要大量自己定制的外设或加速器。这时候FPGA里面的CPU核心和其他外设和加速器紧密耦合,起到一个协调和控制作用。
我简单说一下自己用到的CPU软核:
MIPS789: MIPS 1指令系统,32位5级流水线处理器。是一个开源的处理器核,现在大家在OPENCORES.org能下载到。在EP2C5T系列FPGA上运行到200M。不使用硬件乘除法器的时候占用2K个LE多一些,使用乘除发加速器的时候占用超过3K个LE,这个处理器的是单指令周期的,效率高速度快,直接支持GCC编译器。当时自己刚接触FPGA,还没有形成良好的编码风格,所以模块化不强,代码可读性比较差,也没有做上WISHBONE总线的兼容接口,所以别人很难拿过来直接使用。我自己用这个很熟练,用它做过两款仿真器产品。

CLAIRISC: 这个也是可以在OPENCORES。ORG上找到,支持PIC的12位指令系统,当时感觉PIC的12位指令系统只有33条指令,并且相对其他指令系统也比较怪异,就做了这个两级流水的处理器核,后来感觉比较弱,也没有很好的C编译器支持,就没有继续做下去。这个核配合软件可以实现简单的WISHBONE接口。最小核心是2百多个LE,后来越加也越多,增加到400多了。

PICROBLAZE:这个软核是XILINX以网表形式发布的,8位指令,多周期,能在XILINX的FPGA里面跑,可以有多种不同的配置,最小配置都可以运行在某些COOLRUNNER CPLD里面。缺点是只能用在XILINX的器件里面(网络也有一个代码公开的PACROBLAZE,可以用在多种FPGA里,没有进行完备的检测,跑了个小汇编还可以),而且必须用汇编写代码,PICROBLAZE的汇编指令还是很完备和丰富的。我认为,某些需要复杂状态机要做的事情,而且这些事情的周期咬合不是那么强,完全可以用PICROBLAZE来做。

MICROBLAZE:和PICROBLAZE 一样 是XILINX的产品,也只能用在 XILINX的 器件里面,32位,编译器调试器以及 开发环境完备,就相当于NIOS之对ALTERA的地位。

NIOSII:实际也是我最早接触的CPU核,核心以加密代码形式提供,支持ALTERA器件。用他们的软件环境生成的代码无比繁琐,以致于小的FPGA片内无法保存,我用比较小的NIOS硬件配置,并且自己修改了启动代码,几条汇编后直接执行C语言的MAIN函数,简单做了工具转换,将ELF文件生成HEX文件作为内存初始文件以保存代码。这样一修改,在EP1C3T系列上的FPGA上能跑了,并且占用很少的硬件资源(应该就是600LE的样子),可以跑到200M,但是指令多周期。总体来说已经很不错了。

OR1K:有个中国留学生在ALTERA DE2上跑通了OR1200,并且移植了UC/OS以及LWIP。当时能从他BLOG下载到所有代码,现在不知道能不能找到了。我觉得OR1K研究一下行,实际价值不是很大:主要是占用资源太多。顺便多说两句,如果是要跑比较复杂的软件系统比方说操作系统,如LINUX什么的,我觉得就不应该选择在FPGA内部实现处理器的方案了,因为那时候主要的问题大多已经不再紧密耦合的问题,如果非要这么做,应该是走偏路了。

现在的嵌入处理器很便宜,我觉得要在实际产品中使用FPGA实现处理器核必须有很充足的理由,不能盲目跟风。一般最关键的是要考虑耦合性:当FPGA或是CPLD做外设的时候,和处理器的通讯已经成为瓶颈,这时候可以考虑将CPU核做在FPGA里面。比方说当时做的一个EJTAG仿真器,那时候需要和FX2芯片的SLAVE FIFO进行通讯,并且还要连接自己编写的高速JTAG控制器,其中还做一些上位命令解析的小工作,这时候处理器在整个的系统的通讯速率已经成为关键问题了,用外挂总线方式不是很合适,我当时就把MIPS789做了进去。

如果大家多CPU软核有兴趣,推荐个站 WWW.OPENCORES.ORG 这上面有很多代码公开的处理器,这些也都是学习VERILG以及数字设计的很好素材。等有时间我用上面处理器代码实现小实验做做和大家分享。

说到处理器软核在FPGA里面的实现,不得不提到有限状态机,这不仅仅是因为很多CPU核内部有FSM,主要是FSM作为并行硬件内部实现的串行化操作,很多场合下FSM和CPU核是可以等效的。这是后话,以后等详细说说我的理解。

出0入25汤圆

 楼主| 发表于 2010-12-26 10:06:12 | 显示全部楼层
mcupro :讲的真好,说到我心里去了,我只是表达不出,希望论坛高人继续讨论,

        其实好多事情是相通的,软件的可以用硬件做,用硬件做的软件也能完成

        主要是如何平衡,如何折衷, 如要硬件去搞正则表达式(有用到IP包过滤)

        那是好困难的,但要是用单片机去搞并行时序,那也是赶鸭子上架,(不是说不行)

        所以fpga里跑软核,并不是单纯的跑单片机,而是利用其资源,做到软,硬件

        最优化,同时还要考虑性价比.

出0入0汤圆

发表于 2010-12-26 10:19:48 | 显示全部楼层
我是菜鸟,做好复杂点的状态机是我的中期目标,要是复杂点的状态机都处理不了的问题再向CPU靠拢,不过我现在觉得状态机应该够用了。

出0入0汤圆

发表于 2010-12-26 10:33:36 | 显示全部楼层
回复【3楼】68000
我也顶楼主,我的期待是:
1.or1200
2.tft lcd,能驱动800x480就行了,65535色就可以了。
3.sd卡
4.sdram,如果有可能,只采用1片sdram,16bit总线
5.can
6.适当的uart,spi。
7.最好采用tqfp144的proasic3,不用配置芯片,加密性能好。我不喜欢封装太大的芯片。
-----------------------------------------------------------------------

引脚太少了也不好干事,SDRAM约40,TFT约40就没了

另外,OR1200确实面积太大,学习下还可以,实用性不强硬态度

出0入0汤圆

发表于 2010-12-26 11:36:12 | 显示全部楼层
回复【46楼】liurangzhou
-----------------------------------------------------------------------

SDRAM 约40 IO,TFT如果是16bit的话,只需要20IO,如果采用TQFT144的话,基本上都有100个IO可用,还能剩余大约40个IO,干什么基本都够了。关键的问题是采用1片SDRAM的时候,要驱动800x480的TFT是否合理,毕竟CPU还要做其他的工作。SDRAM总线占用是否过大?

or1200是否好,我不是很了解,其实不管采用哪种内核,我都无所谓。只要能完成我想要的功能就OK了。
-------------------------------------------------------------------------------------------
    我们的产品量不是很大,一年十几台产品,采用ARM9能驱动TFT LCD确实是很常见的方案。但是这么少的量,焊接是很麻烦的事情。我一直想找一个TQFP144封装的,能实现我3楼上所说的功能的芯片,但是,很难找到,不是说没有,品种少而切买不到。
    相对来说,我们这种产量和产品对芯片价格要求不是那么严格,100元的成本和10元的成本对我们来说是一样的。我想,应该有和我的要求相同或相近的朋友。
    拆过一个数码相框,里面有个海尔的CPU,TQFP128封装的,里面只用了一个SDRAM,就能驱动800x480的TFT CLD。可惜,找不到资料,而且,这种产品的周期是个很大的问题,更新太快了。类似的还有君正的芯片。
    飞思卡尔和瑞萨有类似的片子,也都是TQFP144或是TQFP176的封装,但是,在国内基本上是没有卖的。
    所以,用FPGA能定制一个类似的功能的芯片,我有很大的兴趣,但是,我的水平有限。能做的只是跟帖。

出0入25汤圆

 楼主| 发表于 2010-12-26 12:26:03 | 显示全部楼层
68000 : 你的要求不高啊,我上传的or1200学习贴,工程再加上vga核就可以了啊,不过我没做个can, 我上串的图片是1024 x 768 (24bit) 那个VGA核没有问题

出0入0汤圆

发表于 2010-12-26 14:35:52 | 显示全部楼层
回复【48楼】hxl_led
68000 : 你的要求不高啊,我上传的or1200学习贴,工程再加上vga核就可以了啊,不过我没做个can, 我上串的图片是1024 x 768 (24bit) 那个vga核没有问题
-----------------------------------------------------------------------

你有没有真正用过lr1200核,很大哦!

其实在FPGA里面放软核的好处是简化逻辑设计,而缺点是性价比很低!

而且FPGA的安全性值得怀疑,(别跟我提ACTEL,工具特垃圾),别人直接拷贝你的配置芯片即可!

出0入25汤圆

 楼主| 发表于 2010-12-26 14:48:42 | 显示全部楼层
liurangzhou : 我学习or1200三年多啦,从ep1c12 到ep3c16 光板我就做了三次,具我所之,我可能是第 ?? 个完成
              ehternet+  VGA + SD + ucosii + lwip + filesystem (跑linux 我没做过),
              不相信,你可以到网上搜一下,有没有类似的论文,或资料

              网上的那个留学生or1200 论文,他的网络部分并没有验证10M 100M ehternet core 而用的是DM9000
              的芯片 他用的是ucosii 的tcp ip(里面已有DM9000的驱动)  
              我移植是LWIP ,市面上可没有参考资料.

出0入25汤圆

 楼主| 发表于 2010-12-26 16:56:48 | 显示全部楼层
回复【楼主位】hxl_led
-----------------------------------------------------------------------

1) 我在fpga中跑通过8051, AVR, PIC 的 开源CPU核, 8051站的资源大,与or1200 相当,AVR  次之, PIC 最少

   我想知道大家最关心的是什么,速度,面积 性能 实用价值 等,请大家积极发贴  

   我想就此做过个 大家都能参与 的开源项目.

2) 用FPGA驱动LCD屏,VGA显示,SD卡读写,摄像头的使用 哪个更实用 值得去做 ,这方面我都有尝试

   我想就此做过个 大家都能参与 的开源项目.

3) 做一款低档 示波表 + 频率表 + 逻辑分析仪( 采用IP复用技术,一次加载只有一种功能)  ,直接用ep1c3 fpga完成采样及显示(不用nios 或or1200 ,想用 PIC 软核 做些辅助 )模电部分参考魏老师的
   AD 采用tlc5510 或tlc5540 总成本在120左右, 不知可行吗


关于 1)  mcupro 李伟 大侠 已讲的很清楚.

对于2) 3) 不知大家是不是有兴趣, 欢迎大家讨论

出0入0汤圆

发表于 2010-12-26 17:13:37 | 显示全部楼层
支持2)

出0入0汤圆

发表于 2010-12-26 17:20:33 | 显示全部楼层
用FPGA驱动LCD屏,VGA显示,SD卡读写,摄像头,这部分还是有一定的价值的,现在这些我们大部分都是用现成的IPcore或者网表来实现的!

出0入0汤圆

发表于 2010-12-26 19:18:15 | 显示全部楼层
回复【51楼】hxl_led
回复【楼主位】hxl_led  
-----------------------------------------------------------------------
1) 我在fpga中跑通过8051, avr, pic 的 开源cpu核, 8051站的资源大,与or1200 相当,avr  次之, pic 最少  
   我想知道大家最关心的是什么,速度,面积 性能 实用价值 等,请大家积极发贴   
   我想就此做过个 大家都能参与 的开源项目.  
2) 用fpga驱动lcd屏,vga显示,sd卡读写,摄像头的使用 哪个更实用 值得去做 ,这方面我都有尝试  
   我想就此做过个 大家都能参与 的开源项目.  
3) 做一款低档 示波表 + 频率表 + 逻辑分析仪( 采用ip复用技术,一次加载只有一种功能)  ,直接用ep1c3 fpga完成采样及显示(不用nios......
-----------------------------------------------------------------------

都支持,动手吧

出0入0汤圆

发表于 2010-12-26 19:28:34 | 显示全部楼层
对8051核感兴趣,可从网上下载的代码都有这样或那样的问题。
hxl_led 大侠能否提供一些帮助,谢谢!

出0入25汤圆

 楼主| 发表于 2010-12-27 08:54:05 | 显示全部楼层
打算先开始 用FPGA驱动LCD屏,从320 * 240 到 1024 * 768都支持, 接口比较让人头痛,总线的速度快,线多
     SPI的速度又慢,又要考虑普通的单片机都能用如 51 avr pic ,大家支支招

出0入0汤圆

发表于 2010-12-27 09:02:51 | 显示全部楼层
回复【56楼】hxl_led
     打算先开始 用fpga驱动lcd屏,从320 * 240 到 1024 * 768都支持, 接口比较让人头痛,总线的速度快,线多
     spi的速度又慢,又要考虑普通的单片机都能用如 51 avr pic ,大家支支招
-----------------------------------------------------------------------

小分辨率用SPI,大的用总线

出0入25汤圆

 楼主| 发表于 2010-12-27 09:26:06 | 显示全部楼层
回复【57楼】bad_fpga
-----------------------------------------------------------------------

高,鱼与熊掌不可兼得,听你的

出0入0汤圆

发表于 2010-12-27 09:56:16 | 显示全部楼层
回复【56楼】hxl_led

打算先开始 用FPGA驱动LCD屏,从320 * 240 到 1024 * 768都支持, 接口比较让人头痛,总线的速度快,线多
SPI的速度又慢,又要考虑普通的单片机都能用如 51 avr pic ,大家支支招
-----------------------------------------------------------------------
如果有可能,最好采用1片SDRAM,也就是16bit外部数据总线,这样可以减少PCB面积和成本。关键是,在16bit外部数据总线的时候,高分辨率的LCD是否占用总线过高,毕竟程序也要在SDRAM中跑。我倒是希望能支持到800x480的屏就可以了,或者是800x600,这样,总线占用率还能低点、
不要说是软核,就算是ARM9,支持1024x768的也是很累的。驱动那么大的屏,本身也没有太多实际价值。

出0入0汤圆

发表于 2010-12-27 10:05:00 | 显示全部楼层
还有,LCD最好是采用16bit color,这样也能减少总线占用率吧,在一般应用中,16bit color已经足够用了

出0入0汤圆

发表于 2011-1-4 13:25:15 | 显示全部楼层
希望能有强人吧这些核能够传到论坛里,方便大家共同进步啊!!呵呵!

出0入0汤圆

发表于 2011-1-4 13:38:59 | 显示全部楼层
opensparc 核有没有尝试过?

出0入25汤圆

 楼主| 发表于 2011-1-4 14:29:35 | 显示全部楼层
ssaweee : opensparc 核我没用过,只是觉得它太大啦
726544893 : opencores 有很多核啊,你可以下载看看

出0入0汤圆

发表于 2011-1-4 16:08:23 | 显示全部楼层
刚开始学习FPGA,还没能成功的建立一个项目。。。汗。。。

个人也比较相信,FPGA的优势在于并行和速度,若真的只是弄成一个单片机的核的确感觉有点浪费。

但是听了楼上各位的见解,受益匪浅,顺便支持楼主做2)我学它的目的也是为了做2)还想和楼主多讨教讨教~

mark 学习!

出0入0汤圆

发表于 2011-1-4 23:22:51 | 显示全部楼层
回复【63楼】hxl_led  
-----------------------------------------------------------------------

论坛准备赠送的那个进万的fpga应该有足够资源,

出0入0汤圆

发表于 2011-1-19 22:31:18 | 显示全部楼层
比较喜欢nios2和or1200等32bit的内核,这些内核已经可以跑linux等系统,这样学习一下大型操作系统还是很有用的。

拿LCD控制器来说,你要做通用,就没有办法做小。因为很多东西需要软件配置控制器寄存器。
我之前做过个LCD的控制器,EP3C25中占用1500多LE,支持并行RGB,TCON两种接口,在NIOS2 100M,SDRAM 100M 16bit的情况下可以支持到800*480的分辨率,不同分辨率只需要用软件修改一下控制器的寄存器就可以,而且有两个layer,可以支持overlay。不过这种东西玩玩可以,真正要显示图片,视频等,效果还是很差的。

现在想做个LCD控制器:
支持两个layer,每个layer可以选择framebuffer的数据格式,RGB323,RGB565,ARGB888或YUV422等,
支持两个layer做alpha blending。
支持edge enhance。
支持color matrix。
支持gamma correct。
支持dither。
支持LCD,LCM等。

目前我接触的SOC中LCD的控制器都可以实现这些功能,有的甚至不这个更强大。

出0入25汤圆

 楼主| 发表于 2011-1-21 12:50:11 | 显示全部楼层
画了块板 用sdram作显存(预期>=90Mhz,我以前在另一块板的最好结果是130Mhz) ,

实现fpga控制lcd 支持320x240  640x480

800x600 1024x768 用SPI与单片机或ARM 通讯(25Mhz),试验时超高到50Mhz

pcb这两天回来(自我感觉比上海的...要好)

出0入0汤圆

发表于 2011-1-21 14:42:36 | 显示全部楼层
回复【67楼】hxl_led
画了块板 用sdram作显存(预期>=90mhz,我以前在另一块板的最好结果是130mhz) ,
实现fpga控制lcd 支持320x240  640x480  
800x600 1024x768 用spi与单片机或arm 通讯(25mhz),试验时超高到50mhz
pcb这两天回来(自我感觉比上海的...要好)

-----------------------------------------------------------------------

我也研究过一阵SDRAM,不过没做,评估过随机写太慢,我全页突发方式数据带宽230M字节(115MHz*16位).SDRAM是133M,工作在125M

出0入0汤圆

发表于 2011-2-26 08:58:56 | 显示全部楼层
回复【7楼】hxl_led
-------------------------------------------------------------------
你可能不知道 pic core 在fpga 才几百个le ,速度 > 80Mhz 优化的好可以到100Mhz  
          1k的fpga 有的才10元.另一个优点是可任意定制,包括几个pic同时跑

我想知道:10元1K的FPGA是指1K 的LE,还是门数,能说出型号吗?

出0入0汤圆

发表于 2011-2-26 09:18:06 | 显示全部楼层
fpga 不是用来 弄 51 avr之类的。。。

出0入0汤圆

发表于 2011-2-26 14:04:16 | 显示全部楼层
ARM CORTEX-M1

出0入0汤圆

发表于 2011-3-30 07:27:16 | 显示全部楼层
支持软核。

出0入0汤圆

发表于 2011-3-30 10:48:26 | 显示全部楼层
顶楼主!楼主的工作的意义绝非只是局限在学习研究层面,其工程意义也很大!!mcupro说过了当处理器与FPGA(做外设)通信速度不给力的时候,把处理器集成到片内就有工程意义!而且Altera貌似也支持这么干(在某些方面),楼主做的工作不就是SOPC吗?(不知道我理解的对不对)

图片来自Altera的《DSP Design Flow User Guide》 (原文件名:1.png)
同时我顶楼主有一部分原因是我还是个学生,想瞎整那些看似“另类”的技术或者什么的,这样才能提高自己。何况能像楼主那样玩处理器核,不仅得懂FPGA还得懂处理器的,而且不是那种肤浅的懂,不是那种学会C语言编编简单控制代码的那种懂,要想像楼主那样,起码得深入到处理器的架构内,再深一点就得懂处理器RTL级的代码,更深的就得门级了。
楼主说在FPGA上跑51之类的,反对声音一大片。可能大家误解了,楼主做的绝不是做把FPGA=51这样的工作,这样的工作确实没什么大太的意思。
楼主可能最终要实现的是类似上图那样的SOPC系统!!想想最终实现的系统基本只有一块FPGA,那做出来的产品看起来都帅!!而在FPGA上玩51之类的只是给我们学习的一个入门。
当然,我还是新手!说的不对,希望大家指教。顺便说一句,继续跟进楼主的Openrisc学习贴。

出0入0汤圆

发表于 2011-4-1 16:03:30 | 显示全部楼层
在FPGA里搞单片机,并不等于把FPGA当单片机用。
软硬协调的好,就是身怀利刃,就看赶上什么项目了,运气好就发达乐~~

出0入25汤圆

 楼主| 发表于 2011-4-15 13:20:46 | 显示全部楼层
2) 用FPGA驱动LCD屏,VGA显示,SD卡读写,摄像头的使用 哪个更实用 值得去做 ,这方面我都有尝试

   我想就此做过个 大家都能参与 的开源项目.


已完成 2) 也已上传,希望大家多提意见

出0入0汤圆

发表于 2011-4-15 13:31:03 | 显示全部楼层
双手赞成,不过FPGA的稳定性比MCU好吗?

出0入0汤圆

发表于 2011-4-15 17:12:15 | 显示全部楼层
回复【75楼】hxl_led
2) 用fpga驱动lcd屏,vga显示,sd卡读写,摄像头的使用 哪个更实用 值得去做 ,这方面我都有尝试  
   我想就此做过个 大家都能参与 的开源项目.  
已完成 2) 也已上传,希望大家多提意见

-----------------------------------------------------------------------

其他的还会继续做吗?

出0入25汤圆

 楼主| 发表于 2011-4-15 17:19:42 | 显示全部楼层
回复【77楼】wzh6328
-----------------------------------------------------------------------

会的,陆续贴出

出0入0汤圆

发表于 2011-8-15 23:02:36 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-8-27 13:37:47 | 显示全部楼层
学习了。

出0入0汤圆

发表于 2011-9-26 13:10:06 | 显示全部楼层
MARK
今天突然想到可以用FPGA来模拟CPU
于是就找到这里咯

出0入0汤圆

发表于 2011-9-26 14:27:35 | 显示全部楼层
没看到什么有用的东西

出0入0汤圆

发表于 2011-9-30 14:46:00 | 显示全部楼层
1.如果是学习,那我建议做8051核,可借鉴的资源多
2.对一些成熟的应用领域,FPGA没有任何优势,价格贵不说,你考虑得不如人家专用asic全面
3.IP复用这个想法不错

出0入0汤圆

发表于 2011-10-17 20:44:41 | 显示全部楼层
or1200,thanks

出0入0汤圆

发表于 2011-10-18 09:55:57 | 显示全部楼层
个人比较反感nios,spoc ,edk之类的东西,这些东西虽然比较强大,但是都依赖于各自的平台,没有可移植性,换个平台就得从新来过,感觉是altera,xilinx为了限制客户做的东西。当然,我并不反对采用嵌入cpu核,只是希望这是通用的,或者开源的核,这样就容易技术积累,没有必要花时间去重复学一些同样功能的东西。

出0入0汤圆

发表于 2011-10-18 11:07:03 | 显示全部楼层
有人对ARM Cortex-M1有了解么?有没有用过的,好用不?
A家和X家都提供,不知道提供HDL源代码否?

个人觉得CM3和CM0都比较常见,用CM1兼容性和代码重用性会比较好。。。。

出0入0汤圆

发表于 2011-12-31 12:40:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-31 13:20:13 | 显示全部楼层
干脆直接开项目设计CPU算了,设计个并行的CPU。。。从内核开始一路攀升。。。
。。。
有点极端了
。。。

最近看了点CPU核心设计的书,看汇编如看天书的我连汇编也能懂了一点。。。
从FPGA返回来了解汇编,,有点另类

出0入0汤圆

发表于 2011-12-31 22:44:17 | 显示全部楼层
这贴还在呢……为啥大家对FPGA上的软核这种东西这么感兴趣,我确实想不通……FPGA上SERDES\DDRII\DDRIII为啥没人去研究呢?哪怕一个简单单的SDRAM核,有人能写个高效的控制器不?研究一个没有意义的东西对你自己能有多少提高?岂不是找到了屠龙之术却无龙可屠么?

出0入0汤圆

发表于 2011-12-31 23:48:37 | 显示全部楼层
这里很热闹

出0入0汤圆

发表于 2012-1-6 08:28:47 | 显示全部楼层
最近做了一个项目,也是用FPGA带动VGA TFT LCD,只需要16色就够,不过要快,屏幕内容要每秒钟刷新60次。
需要一个16位能做乘法的小CPU,要能在cyclone 2上跑到75MHz以上。
找来找去opencore上没有合适的,还是找了一个西班牙某所大学开发的DSP,叫DSPuva16。改一改还挺合用的。
nios ii还限制什么运行时间,真是太小器了。另外6个时钟的指令周期也是不一般的慢。

出0入0汤圆

发表于 2012-1-8 14:41:14 | 显示全部楼层
大部分项目/产品里面用的soc都是8051核的,即使有其他核的,也是在8051核的产品出来后再升级的。

出0入0汤圆

发表于 2012-1-9 19:30:13 | 显示全部楼层
ARM硬核大军马上就杀到了。。。

出0入0汤圆

发表于 2012-4-8 21:29:04 | 显示全部楼层
支持楼主,楼主的板子什么时候出来呀

出0入0汤圆

发表于 2012-4-8 22:53:46 | 显示全部楼层
有梦想就值得去坚持 支持楼主  

出0入0汤圆

发表于 2012-4-8 23:00:59 | 显示全部楼层
hxl_led 发表于 2010-12-24 22:01
bluehacker : 千兆网MAC是我根据网上的资料改写的,不是用opencore上的 IP core
             协议包括MAC  ...

写个TCP试试看,FPGA做tcp就没这么简单啦。

另:fpga实现的TCP/IP协议是不全的,就千M来说,美满的千M以太网ARM还是很多的。

出0入0汤圆

发表于 2012-6-20 17:08:36 | 显示全部楼层
做FPGA CPU要考虑资源少,软件调试方便

出0入0汤圆

发表于 2012-6-20 17:49:28 | 显示全部楼层
好贴   收藏一下

出0入0汤圆

发表于 2013-7-10 16:32:05 | 显示全部楼层
楼主是个牛人!不过要好好利用你的技术啊!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 05:20

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表