|
技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe |
這個在C6000上外擴的一個輸出端口,很不穩(wěn)定。 |
作者:boy364 欄目:DSP技術 |
C6000的DSP,用鎖存器LVC574外擴了一個輸出口,輸出口用的是C3空間。接八個發(fā)光二極管,如圖所示。該輸出端口的地址由A7、A8、A9決定(網絡標號用“T”打頭的是由EMIF總線端接33歐電阻的信號) CE3空間配置為八位異步存儲器,Space CONTROL Register(CECTL3)中的各項參數(shù)都按最大的配,也就是復位后的默認值0xffffff03.編了個測試程序,讓八個二極管周期性閃爍。把程序放在外部SDRAM時候,只有一個二極管閃爍,把程序放在內部L2 Cache中,有四個閃爍。應該八個二極管都閃爍才對,說明給LVC574的信號沒有正確鎖存。估算了一個,寄存器(CECTL3)配置應該完全能滿足LVC574的建立和保持時間的,但是實際卻是這樣,很是迷惑。 * - 本貼最后修改時間:2006-2-10 11:46:44 修改者:boy364 在c6000上外擴的是個輸出端口 |
2樓: | >>參與討論 |
作者: boy364 于 2006/2/10 9:39:00 發(fā)布:
頂起來 |
3樓: | >>參與討論 |
作者: shixiudong 于 2006/2/11 21:03:00 發(fā)布:
回答: 故障原因:74LVC574在CLK信號的上升沿鎖存數(shù)據,而不是在下降沿。 解決方法:把SN74LVC02換成SN74LVC32,即可解決問題。 回答完畢。 |
4樓: | >>參與討論 |
作者: boy364 于 2006/2/13 10:07:00 發(fā)布:
我試一下 確實不一樣,用1G32的話,是在地址或者寫信號失效時(最先失效的那個)產生上升沿(鎖存信號),用1G02的話,是在地址和寫信號都有效時產生上升沿(鎖存信號)。1G32的鎖存信號教1G02來的晚一些。換成1G32后再給大家公布結果,希望能成功。 * - 本貼最后修改時間:2006-2-13 10:39:24 修改者:boy364 |
5樓: | >>參與討論 |
作者: boy364 于 2006/2/13 13:55:00 發(fā)布:
郁悶,換上1G32,還是不穩(wěn)定 買了LVC573以后,再換鎖存器看看行不行 * - 本貼最后修改時間:2006-2-13 13:57:38 修改者:boy364 |
6樓: | >>參與討論 |
作者: lxg133 于 2006/2/13 14:49:00 發(fā)布:
我也在6000的CE1空間上擴展了8個LED 我也在6000的CE1空間上擴展了8個LED,映射的地址為0x9008 0011,是用邏輯做的,沒遇到什么問題。 沒有仔細分析你的電路,看著蠻復雜的,把我的邏輯貼出來看看,希望有幫助: //-------------------------------------------------------------------- // this version is a solution for DM642's EPLD // HARDWARE Version: II // 2005.09.16 lxg //-------------------------------------------------------------------- MODULE top( system_reset, awe, aoe, are, tea22,tea8,tea7,tea6,tea5,tea4,tea3, ted, // data bus [7:0] tce1, // EMIFA ce1 iic_sel, // i2c bus SELECT dsp_scl0, // i2c clock uart_inta,uart_intb, // uart cs eprom_ce, FLASH_ce, emifa_oe, emifa_dir, uart_csa,uart_csb, dsp_scl1, dsp_scl2, FLASH_add, user_led, dsp_extint4, // DM642ÍⲿÖжÏÐźÅ4 dsp_extint5, // DM642ÍⲿÖжÏÐźÅ5 ); // input signal input system_reset; wire system_reset; input awe; // write enable input are; // read input aoe; // OUTPUT enable input tea22; // address 22 input tea8; input tea7; input tea6; input tea5; input tea4; input tea3; input [7:0] ted; input tce1; input uart_inta; input uart_intb; input iic_sel; input dsp_scl0; // OUTPUT signal OUTPUT dsp_scl1; OUTPUT dsp_scl2; OUTPUT dsp_extint4; OUTPUT dsp_extint5; OUTPUT emifa_oe; // EMIFA bus OUTPUT enable OUTPUT emifa_dir; // EMIFA bus direction OUTPUT FLASH_ce; // FLASH.html">FLASH chip SELECT OUTPUT eprom_ce; // EPROM chip SELECT OUTPUT uart_csa; // COM0 chip SELECT OUTPUT uart_csb; // COM1 chip SELECT OUTPUT [5:0] FLASH_add; // extend address OUTPUT [7:0] user_led; // user defined led reg [5:0] FLASH_add; reg [7:0] user_led; //reg emifa_oe; //reg emifa_dir; wire write_FLASH_addr; wire OUTPUT_user_led; wire write_cs_CONTROL; reg cs_sel; // cs_sel = 0 SELECT EPROM // cs_sel = 1 SELECT FLASH // emifa_dir = 0 : write // emifa_dir = 1 : read // aoe = 0 when DM642 read. assign emifa_oe = tce1; assign emifa_dir = ~(tce1 | aoe); assign dsp_scl1 = (iic_sel==1'b1) ? dsp_scl0 : 1'bz; assign dsp_scl2 = (iic_sel==1'b1) ? dsp_scl0 : 1'bz; assign dsp_extint4 = uart_inta; assign dsp_extint5 = uart_intb; //00000-7ffff assign eprom_ce = (cs_sel==1'b0) ? (tce1 | tea22) : 1'b1; //00000-7ffff assign FLASH_ce = (cs_sel==1'b1) ? (tce1 | tea22) : 1'bz; //80000-80007 assign uart_csa = tce1 | ~tea22 | tea7 | tea6 | tea8; //80008-8000f assign uart_csb = tce1 | ~tea22 | tea7 | ~tea6 | tea8; //80010 Ext address assign write_FLASH_addr = tce1 | ~tea22 | tea6 | ~tea7 | tea8 | tea5 | tea4 | tea3; //80011 user led assign OUTPUT_user_led = tce1 | ~tea22 | tea6 | ~tea7 | tea8 | tea5 | tea4 | ~tea3; //80012 EPROM or FLASH.html">FLASH cs CONTROL reg assign write_cs_CONTROL = tce1 | ~tea22 | tea6 | ~tea7 | tea8 | tea5 | ~tea4 | tea3; //OUTPUT FLASH address always @ (negedge awe or negedge system_reset) begin if(~system_reset) begin FLASH_add <= 6'b000000; // set A24-A19 to 0 cs_sel <= 1'b1; // SELECT FLASH user_led <= 8'hff; // turn off led at reset //emifa_oe <= 1'b0; //emifa_dir <= 1'b0; end else if (~write_FLASH_addr) begin FLASH_add <= ted[5:0]; // latch the address end else if (~OUTPUT_user_led) begin &n |
7樓: | >>參與討論 |
作者: lxg133 于 2006/2/13 14:56:00 發(fā)布:
抱歉,寫錯了,我的是在CE1空間擴展的 抱歉,寫錯了,我的是在CE1空間擴展的 |
8樓: | >>參與討論 |
作者: boy364 于 2006/2/15 10:55:00 發(fā)布:
試了LVC573,好像也不成功 咋回事呢,難道一定要用CPLD? |
|
|
免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號 |