查看: 9393|回復: 13
打印 上一主題 下一主題

打算 學(xué) ALTERA 的 MAX3000系列的 EPM3128

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2009-6-18 10:32:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: ALTERA
打算 學(xué) ALTERA 的 MAX3000系列的 EPM3128    或EPM5000系列。

作為初學(xué)者,選擇簡(jiǎn)單的CPLD做入門(mén)。封裝100LQFP的。

好希望聽(tīng)聽(tīng) 都是初學(xué)者的你的意見(jiàn)。 高手免提!
沙發(fā)
 樓主| 發(fā)表于 2009-6-18 10:45:31 | 只看該作者
大家為什么想使用FPGA/CPLD.? 是是什么行業(yè)?什么項目? 可以簡(jiǎn)單說(shuō)說(shuō)嗎?

我主要是用CPLD 來(lái)擴展 I/O口,暫時(shí)就這個(gè)需要。因此沒(méi)什么要求,簡(jiǎn)單學(xué)學(xué)就OK.
板凳
發(fā)表于 2009-6-18 11:59:48 | 只看該作者
建議LZ將學(xué)習經(jīng)歷共享撒~
地板
發(fā)表于 2009-6-19 00:06:44 | 只看該作者
cpld,太簡(jiǎn)單了。用原理圖輸入就可以了。
地下室
發(fā)表于 2009-6-19 00:18:09 | 只看該作者
二者沒(méi)有簡(jiǎn)單和復雜之分

一般而言,CPLD是基于Macro Cell的,FPGA是基于LUT
CPLD的delay小并且可以準確預估,非常適合做組合邏輯功能
FPGA基于LUT門(mén)密度大,flip-flop更加豐富,適合做時(shí)序邏輯
6
發(fā)表于 2009-6-20 13:00:25 | 只看該作者
玩玩用3128也無(wú)妨。做批量就用epm240吧。價(jià)格更便宜,供貨也ok,資源更多。
我是想用“免提”和你通話(huà)的,可這個(gè)破論壇沒(méi)這功能啊。
7
發(fā)表于 2009-6-20 13:12:06 | 只看該作者
epm240 是新品,你說(shuō)的那個(gè)快停產(chǎn)了。
8
發(fā)表于 2009-6-20 13:16:19 | 只看該作者
樓上咋不用“免提”,不厚道
9
 樓主| 發(fā)表于 2009-6-22 10:10:14 | 只看該作者
EPM240才10元,  240個(gè)宏單元.
參考資料:
Using MAX II & MAX 3000A
Devices as a Microcontroller
I/O Expander

比較好入門(mén),程序,說(shuō)明都很詳細。簡(jiǎn)單學(xué)學(xué)~
10
 樓主| 發(fā)表于 2009-6-22 12:39:48 | 只看該作者
下面是代碼

module IO_Expander (CS, RD, WR, RST, CONF, LOAD, MODE,
MCU_IO, IO_PortA, IO_PortB, IO_PortC, IO_PortD);

input CS, RD, WR, RST, CONF, LOAD, MODE;

inout [7:0] MCU_IO, IO_PortA, IO_PortB, IO_PortC, IO_PortD;

wire writeA, writeB, writeC, writeD, read, en_IObuf, reset;
wire [1:0] Latched_Addr;
wire [3:0] inv_address;
wire [7:0] rbuf, wbuf_A, wbuf_B, wbuf_C, wbuf_D, inbuf, outbuf, Latched_en;

latch_io write_instA(.enable(writeA),.reset(reset),.data(MCU_IO),.q(wbuf_A));
latch_io write_instB(.enable(writeB),.reset(reset),.data(MCU_IO),.q(wbuf_B));
latch_io write_instC(.enable(writeC),.reset(reset),.data(MCU_IO),.q(wbuf_C));
latch_io write_instD(.enable(writeD),.reset(reset),.data(MCU_IO),.q(wbuf_D));
latch_io read_inst(.enable(read),.reset(reset),.data(inbuf),.q(rbuf));

reg_Addr register1_load(.enable((CONF & LOAD) | CS),.reset(reset),.data(MCU_IO[1:0]),.q(Latched_Addr));
reg_en register2_load(.enable(CONF | CS),.reset(reset),.data({inv_address[3:0],MCU_IO[5:2]}),.q(Latched_en));

tri_buffer wPortA(.in(wbuf_A),.oe(Latched_en[0]),.out(IO_PortA));
tri_buffer wPortB(.in(wbuf_B),.oe(Latched_en[1]),.out(IO_PortB));
tri_buffer wPortC(.in(wbuf_C),.oe(Latched_en[2]),.out(IO_PortC));
tri_buffer wPortD(.in(wbuf_D),.oe(Latched_en[3]),.out(IO_PortD));
tri_buffer rPort(.in(rbuf),.oe((en_IObuf & ~MODE) | (en_IObuf & CS)),.out(outbuf));

mux4_8bit mux0(.inA(IO_PortA),.inB(IO_PortB),.inC(IO_PortC),.inD(IO_PortD),.sel(Latched_Addr),.mux_out(inbuf));
mux4_1bit mux1(.inA(Latched_en[4]),.inB(Latched_en[5]),.inC(Latched_en[6]),.inD(Latched_en[7]),.sel(Latched_Addr),.mux_out(en_IObuf));

assign inv_address[3:0] = {~MCU_IO[5], ~MCU_IO[4], ~MCU_IO[3], ~MCU_IO[2]};
assign MCU_IO = outbuf;
assign reset = RST | CS;
assign read = RD | CS;
assign writeA = (Latched_Addr[0] | Latched_Addr[1] | WR) | CS;
assign writeB = (~Latched_Addr[0] | Latched_Addr[1] | WR) | CS;
assign writeC = (Latched_Addr[0] | ~Latched_Addr[1] | WR) | CS;
assign writeD = (~Latched_Addr[0] | ~Latched_Addr[1] | WR) | CS;

endmodule
11
 樓主| 發(fā)表于 2009-6-29 10:38:42 | 只看該作者
CPLD最大的問(wèn)題是 燒寫(xiě)壽命短,才100~200次! 學(xué)習不方面。使用FPGA就比較好些。

ALTERA的CYCLONE 應該合適(LQFP-100封裝的),但是價(jià)格比較貴!
12
發(fā)表于 2009-6-29 10:49:05 | 只看該作者
要做發(fā)燒音響,不得不用CPLD 控制時(shí)序。
13
發(fā)表于 2009-7-22 09:50:16 | 只看該作者
呵呵。。。學(xué)習。。
14
 樓主| 發(fā)表于 2009-8-5 18:06:10 | 只看該作者
現在覺(jué)得一塊開(kāi)發(fā)板和一堆簡(jiǎn)單易懂的例子很重要~
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页