[Actel FPGA] 再次请教8051扩展SRAM!急!

[复制链接]
 楼主| Djwbit 发表于 2008-5-8 18:32 | 显示全部楼层 |阅读模式
8051扩展SRAM后,程序烤进去后没反应,不知道我们的工程哪儿错了,请版主指教!<br /><br />我做了两个工程,好像都有问题,顶层文件如下,请版主帮我看看错在什么地方,万分感谢!<br /><br />顶层文件1:<br /><br />module&nbsp;USER_CORE8051&nbsp;(p_reset,&nbsp;clk48m,p0o,p0i,p1o,p1i,p2o,rxd,txd,INT0,TCK,TDI,TDO,TMS,TRSTB,memdata,cs,wr,rd,ub,lb,adr);<br />parameter&nbsp;FMEMFILE&nbsp;=&nbsp;&quot;flashmem.mem&quot;;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;input&nbsp;p_reset;<br />&nbsp;&nbsp;&nbsp;&nbsp;input&nbsp;clk48m;<br />&nbsp;&nbsp;&nbsp;&nbsp;input&nbsp;TCK,TDI,TMS,TRSTB;<br />&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;TDO;<br />&nbsp;&nbsp;&nbsp;&nbsp;output[7:0]&nbsp;p0o,p1o,p2o;<br />&nbsp;&nbsp;&nbsp;&nbsp;input[7:0]&nbsp;p0i,p1i;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;input&nbsp;INT0;<br />&nbsp;&nbsp;&nbsp;&nbsp;input&nbsp;rxd;<br />&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;txd;<br />&nbsp;&nbsp;&nbsp;&nbsp;inout&nbsp;[15:0]&nbsp;memdata;<br />&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;cs,wr,rd,ub,lb;<br />&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;[18:0]&nbsp;adr;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;mcuclk,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nmcuclk,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clk18m;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;dbgmempswr,mempsrd,memwr,memrd;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;[7:0]&nbsp;&nbsp;memdatao;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;[7:0]&nbsp;&nbsp;memdatai;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;[15:0]&nbsp;memaddr;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;[15:0]&nbsp;memdatao16;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;[15:0]&nbsp;memdatai16;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire[7:0]&nbsp;ramdatai;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire[7:0]&nbsp;ramdatao;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire[7:0]&nbsp;ramaddr;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;ramwe;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;ramoe;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;n_reset;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire[31:0]&nbsp;zeroes;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire[31:0]&nbsp;ones;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;GND_sig;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;VCC_sig;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Flash&nbsp;Memory&nbsp;signals<br />wire&nbsp;&nbsp;&nbsp;&nbsp;[17:0]&nbsp;&nbsp;&nbsp;&nbsp;fm_addr;<br />wire&nbsp;&nbsp;&nbsp;&nbsp;[31:0]&nbsp;&nbsp;&nbsp;&nbsp;fm_din;<br />wire&nbsp;&nbsp;&nbsp;&nbsp;[31:0]&nbsp;&nbsp;&nbsp;&nbsp;fm_dout;<br />wire&nbsp;&nbsp;&nbsp;&nbsp;[1:0]&nbsp;&nbsp;&nbsp;&nbsp;fm_byte_width;<br />wire&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fm_busy;<br />wire&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RESETN;<br />wire&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mempsacki_pre;<br />reg&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mempsacki;<br /><br /><br />assign&nbsp;fm_addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;{2'h0,memaddr[15:0]};<br />assign&nbsp;fm_byte_width&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;2'b00;<br />assign&nbsp;fm_din&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;32'b0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;GND_sig&nbsp;=&nbsp;1'b0&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;VCC_sig&nbsp;=&nbsp;1'b1&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;zeroes&nbsp;=&nbsp;{32{1'b0}}&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;ones&nbsp;=&nbsp;{32{1'b1}}&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;n_reset&nbsp;=&nbsp;~p_reset;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;memdatao16={memdatao,memdatao};<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;memdatai=mempsrd?fm_dout[7:0]:memdatai16[15:8];<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;memdatai16=memdata;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;memdata=(dbgmempswr||memwr)?memdatao16:16'bzzzzzzzzzzzzzzzz;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;adr={3'b000,memaddr};<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;wr=~(dbgmempswr||memwr);<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;rd=~(mempsrd||memrd);<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;cs=wr&rd;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;ub=~(memwr||memrd);<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;lb=~(dbgmempswr||mempsrd);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;mcuclk&nbsp;&nbsp;=clk18m;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;nmcuclk&nbsp;=&nbsp;~mcuclk&nbsp;;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;GND0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1'b0;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;VCC1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;1'b1;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;pll33m&nbsp;pll33m(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.POWERDOWN(VCC_sig),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.CLKA(clk48m),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.GLA(clk18m)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />&nbsp;&nbsp;&nbsp;&nbsp;CORE8051&nbsp;CORE8051_inst&nbsp;(.nreset(n_reset),&nbsp;.clk(mcuclk),&nbsp;.clkcpu(mcuclk),<br />&nbsp;&nbsp;&nbsp;&nbsp;.clkper(mcuclk),&nbsp;.port0i(p0i),<br />&nbsp;&nbsp;&nbsp;&nbsp;.port1i(p1i),&nbsp;.port2i(zeroes[7:0]),&nbsp;.port3i(zeroes[7:0]),<br />&nbsp;&nbsp;&nbsp;&nbsp;.int0(INT0),&nbsp;.int1(VCC_sig),&nbsp;.int0a(GND_sig),&nbsp;.int1a(GND_sig),<br />&nbsp;&nbsp;&nbsp;&nbsp;.int2(GND_sig),&nbsp;.int3(GND_sig),&nbsp;.int4(GND_sig),&nbsp;.int5(GND_sig),<br />&nbsp;&nbsp;&nbsp;&nbsp;.int6(GND_sig),&nbsp;.int7(GND_sig),&nbsp;.rxd0i(rxd),&nbsp;.t0(GND_sig),.t1(GND_sig),<br />&nbsp;&nbsp;&nbsp;&nbsp;.nrsto(RESETN),&nbsp;.nrsto_nc(),&nbsp;.clkcpu_en(),&nbsp;.clkper_en(),&nbsp;.movx(),&nbsp;.port0o(p0o),<br />&nbsp;&nbsp;&nbsp;&nbsp;.port1o(p1o),&nbsp;.port2o(p2o),&nbsp;.port3o(),&nbsp;.rxd0o(),&nbsp;.txd0(txd),&nbsp;.mempsacki(mempsacki),<br />&nbsp;&nbsp;&nbsp;&nbsp;.memacki(VCC_sig),&nbsp;.memdatai(memdatai),&nbsp;.mempsacko(),&nbsp;.memdatao(memdatao),<br />&nbsp;&nbsp;&nbsp;&nbsp;.memaddr(memaddr),&nbsp;.mempsrd(mempsrd),&nbsp;.memwr(memwr),&nbsp;.memrd(memrd),&nbsp;.ramdatai(ramdatai),<br />&nbsp;&nbsp;&nbsp;&nbsp;.ramdatao(ramdatao),&nbsp;.ramaddr(ramaddr),&nbsp;.ramwe(ramwe),&nbsp;.ramoe(ramoe),<br />&nbsp;&nbsp;&nbsp;&nbsp;.sfrdatai(zeroes[7:0]),&nbsp;.sfrdatao(),&nbsp;.sfraddr(),&nbsp;.sfrwe(),&nbsp;.sfroe(),<br />&nbsp;&nbsp;&nbsp;&nbsp;.TCK(TCK),&nbsp;.TMS(TMS),&nbsp;.TDI(TDI),&nbsp;.TDO(TDO),&nbsp;.TRSTB(TRSTB),<br />&nbsp;&nbsp;&nbsp;&nbsp;.BreakIn(GND_sig),&nbsp;.BreakOut(),&nbsp;.membank(zeroes[3:0]),&nbsp;.dbgmempswr(dbgmempswr),<br />&nbsp;&nbsp;&nbsp;&nbsp;.TrigOut(),&nbsp;.AuxOut(),&nbsp;.TraceA(),&nbsp;.TraceDI(),&nbsp;.TraceDO(zeroes[19:0]),<br />&nbsp;&nbsp;&nbsp;&nbsp;.TraceWr());<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RAM256X8&nbsp;&nbsp;internal_RAM(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.WD(ramdatao),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.RD(ramdatai),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.WEN(ramwe),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.REN(ramoe),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.WADDR(ramaddr),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.RADDR(ramaddr),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.WCLK(mcuclk),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.RCLK(nmcuclk)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br /><br />NVM&nbsp;#(.MEMORYFILE(FMEMFILE))&nbsp;u_FLASH_MEM&nbsp;(<br />&nbsp;&nbsp;&nbsp;&nbsp;.ADDR(fm_addr),<br />&nbsp;&nbsp;&nbsp;&nbsp;.WD(fm_din),<br />&nbsp;&nbsp;&nbsp;&nbsp;.DATAWIDTH(fm_byte_width),<br />&nbsp;&nbsp;&nbsp;&nbsp;.REN(VCC1),<br />&nbsp;&nbsp;&nbsp;&nbsp;.READNEXT(GND0),<br />&nbsp;&nbsp;&nbsp;&nbsp;.PAGESTATUS(GND0),<br />&nbsp;&nbsp;&nbsp;&nbsp;.WEN(GND0),<br />&nbsp;&nbsp;&nbsp;&nbsp;.ERASEPAGE(GND0),<br />&nbsp;&nbsp;&nbsp;&nbsp;.PROGRAM(GND0),<br />&nbsp;&nbsp;&nbsp;&nbsp;.SPAREPAGE(GND0),<br />&nbsp;&nbsp;&nbsp;&nbsp;.AUXBLOCK(GND0),<br />&nbsp;&nbsp;&nbsp;&nbsp;.UNPROTECTPAGE(GND0),<br />&nbsp;&nbsp;&nbsp;&nbsp;.OVERWRITEPAGE(GND0),<br />&nbsp;&nbsp;&nbsp;&nbsp;.DISCARDPAGE(GND0),<br />&nbsp;&nbsp;&nbsp;&nbsp;.OVERWRITEPROTECT(GND0),<br />&nbsp;&nbsp;&nbsp;&nbsp;.PAGELOSSPROTECT(GND0),<br />&nbsp;&nbsp;&nbsp;&nbsp;.PIPE(VCC1),<br />&nbsp;&nbsp;&nbsp;&nbsp;.LOCKREQUEST(VCC1),<br />&nbsp;&nbsp;&nbsp;&nbsp;.CLK(fasterclk),<br />&nbsp;&nbsp;&nbsp;&nbsp;.RESET(RESETN),<br />&nbsp;&nbsp;&nbsp;&nbsp;.RD(fm_dout),<br />&nbsp;&nbsp;&nbsp;&nbsp;.BUSY(fm_busy),<br />&nbsp;&nbsp;&nbsp;&nbsp;.STATUS()<br />);<br /><br />always&nbsp;@(negedge&nbsp;mcuclk&nbsp;or&nbsp;negedge&nbsp;RESETN)<br />begin<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!RESETN)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mempsacki&nbsp;&nbsp;&nbsp;&nbsp;&lt=&nbsp;1'b0;<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mempsacki&nbsp;&nbsp;&nbsp;&nbsp;&lt=&nbsp;mempsacki_pre;<br />end<br />assign&nbsp;mempsacki_pre&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;~fm_busy;<br /><br />endmodule<br /><br />顶层文件2:<br /><br />//8051模块<br />module&nbsp;USER_CORE8051&nbsp;(reset,&nbsp;clk48m,p0o,p0i,p1o,p1i,p2o,p2i,p3o,p3i,rxd,txd,INT0,INT1,TCK,TDI,TDO,TMS,TRSTB,memdata,cs,wr,rd,ub,lb,adr);<br />&nbsp;&nbsp;&nbsp;&nbsp;input&nbsp;reset;<br />&nbsp;&nbsp;&nbsp;&nbsp;input&nbsp;clk48m;<br />&nbsp;&nbsp;&nbsp;&nbsp;output[7:0]&nbsp;p0o,p1o,p2o,p3o;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//51单片机的P1,P2,P3&nbsp;输出口<br />&nbsp;&nbsp;&nbsp;&nbsp;input[7:0]&nbsp;p0i,p1i,p2i,p3i;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//51单片机的P1,P2输入口&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;input&nbsp;INT0,INT1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//单片机中断信号&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;input&nbsp;rxd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//51单片机串口接收数据端口<br />&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;txd;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//51单片机串口发送数据端口<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;input&nbsp;TCK,TDI,TMS,TRSTB;<br />&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;TDO;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;inout&nbsp;[15:0]&nbsp;memdata;<br />&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;cs,wr,rd,ub,lb;<br />&nbsp;&nbsp;&nbsp;&nbsp;output&nbsp;[18:0]&nbsp;adr;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;mcuclk,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nmcuclk;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;dbgmempswr,mempsrd,memwr,memrd;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;[7:0]&nbsp;&nbsp;memdatao;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;[7:0]&nbsp;&nbsp;memdatai;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;[15:0]&nbsp;memaddr;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;[15:0]&nbsp;memdatao16;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;[15:0]&nbsp;memdatai16;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire[7:0]&nbsp;ramdatai;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire[7:0]&nbsp;ramdatao;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire[7:0]&nbsp;ramaddr;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;mempsacki;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;ramwe;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;ramoe;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;n_reset;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;wire[31:0]&nbsp;zeroes;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire[31:0]&nbsp;ones;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;GND_sig;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;wire&nbsp;VCC_sig;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Flash&nbsp;Memory&nbsp;signals<br />wire&nbsp;&nbsp;&nbsp;&nbsp;[17:0]&nbsp;&nbsp;&nbsp;&nbsp;fm_addr;<br />wire&nbsp;&nbsp;&nbsp;&nbsp;[31:0]&nbsp;&nbsp;&nbsp;&nbsp;fm_din;<br />wire&nbsp;&nbsp;&nbsp;&nbsp;[31:0]&nbsp;&nbsp;&nbsp;&nbsp;fm_dout;<br />wire&nbsp;&nbsp;&nbsp;&nbsp;[1:0]&nbsp;&nbsp;&nbsp;&nbsp;fm_byte_width;<br />wire&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fm_busy;<br />wire&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mempsacki_pre;<br />wire&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RESETN;<br /><br /><br />assign&nbsp;fm_addr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;{2'h0,memaddr[15:0]};<br />assign&nbsp;fm_din&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;32'b0;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;GND_sig&nbsp;=&nbsp;1'b0&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;VCC_sig&nbsp;=&nbsp;1'b1&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;zeroes&nbsp;=&nbsp;{32{1'b0}}&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;ones&nbsp;=&nbsp;{32{1'b1}}&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;n_reset&nbsp;=&nbsp;~reset;&nbsp;&nbsp;&nbsp;&nbsp;//低电平复位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;memdatao16={memdatao,memdatao};<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;memdatai=mempsrd?fm_dout[7:0]:memdatai16[15:8];<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;memdatai16=memdata;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;memdata=(dbgmempswr||memwr)?memdatao16:16'bzzzzzzzzzzzzzzzz;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;adr={3'b000,memaddr};<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;wr=~(dbgmempswr||memwr);<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;rd=~(mempsrd||memrd);<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;cs=wr&rd;<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;ub=~(memwr||memrd);<br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;lb=~(dbgmempswr||mempsrd);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;assign&nbsp;nmcuclk&nbsp;=&nbsp;~mcuclk&nbsp;;<br /><br /><br /><br />/*Flsahmemory作为8051的内部ROM*/<br />flashmem&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;U1(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.USER_CLK(!mcuclk),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.USER_RESET(RESETN),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.USER_ADD(fm_addr),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.USER_READ(mempsrd),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.USER_WIDTH(2'b00),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.USER_DOUT(fm_dout),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//数据位宽为8位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.USER_READ_NEXT(1'b0),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//正常读写<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.USER_NVM_BUSY(fm_busy)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br /><br /><br />/*Flsahmemory读控制模块*/<br />Core8051_ROM_Ctr&nbsp;&nbsp;&nbsp;&nbsp;U2(&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.clk_ctr(mcuclk),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.rst(!RESETN),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.BUSY(fm_busy),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.mempsacki(mempsacki)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br /><br />&nbsp;//例化PLL<br />&nbsp;&nbsp;&nbsp;pll33m&nbsp;pll33m(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.POWERDOWN(VCC_sig),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.CLKA(clk48m),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.GLA(mcuclk)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br />//例化8051模块<br />&nbsp;&nbsp;&nbsp;&nbsp;CORE8051&nbsp;CORE8051_inst&nbsp;(.nreset(n_reset),&nbsp;.clk(mcuclk),&nbsp;.clkcpu(mcuclk),<br />&nbsp;&nbsp;&nbsp;&nbsp;.clkper(mcuclk),&nbsp;.port0i(p0i),<br />&nbsp;&nbsp;&nbsp;&nbsp;.port1i(p1i),&nbsp;.port2i(p2i),&nbsp;.port3i(p3i),<br />&nbsp;&nbsp;&nbsp;&nbsp;.int0(INT0),&nbsp;.int1(INT1),&nbsp;.int0a(GND_sig),&nbsp;.int1a(GND_sig),<br />&nbsp;&nbsp;&nbsp;&nbsp;.int2(GND_sig),&nbsp;.int3(GND_sig),&nbsp;.int4(GND_sig),&nbsp;.int5(GND_sig),<br />&nbsp;&nbsp;&nbsp;&nbsp;.int6(GND_sig),&nbsp;.int7(GND_sig),&nbsp;.rxd0i(rxd),&nbsp;.t0(GND_sig),.t1(GND_sig),<br />&nbsp;&nbsp;&nbsp;&nbsp;.nrsto(RESETN),&nbsp;.nrsto_nc(),&nbsp;.clkcpu_en(),&nbsp;.clkper_en(),&nbsp;.movx(),&nbsp;.port0o(p0o),<br />&nbsp;&nbsp;&nbsp;&nbsp;.port1o(p1o),&nbsp;.port2o(p2o),&nbsp;.port3o(p3o),&nbsp;.rxd0o(),&nbsp;.txd0(txd),&nbsp;.mempsacki(mempsacki),<br />&nbsp;&nbsp;&nbsp;&nbsp;.memacki(VCC_sig),&nbsp;.memdatai(memdatai),&nbsp;.mempsacko(),&nbsp;.memdatao(memdatao),<br />&nbsp;&nbsp;&nbsp;&nbsp;.memaddr(memaddr),&nbsp;.mempsrd(mempsrd),&nbsp;.memwr(memwr),&nbsp;.memrd(memrd),&nbsp;.ramdatai(ramdatai),<br />&nbsp;&nbsp;&nbsp;&nbsp;.ramdatao(ramdatao),&nbsp;.ramaddr(ramaddr),&nbsp;.ramwe(ramwe),&nbsp;.ramoe(ramoe),<br />&nbsp;&nbsp;&nbsp;&nbsp;.sfrdatai(zeroes[7:0]),&nbsp;.sfrdatao(),&nbsp;.sfraddr(),&nbsp;.sfrwe(),&nbsp;.sfroe(),<br />&nbsp;&nbsp;&nbsp;&nbsp;.TCK(TCK),&nbsp;.TMS(TMS),&nbsp;.TDI(TDI),&nbsp;.TDO(TDO),&nbsp;.TRSTB(TRSTB),<br />&nbsp;&nbsp;&nbsp;&nbsp;.BreakIn(GND_sig),&nbsp;.BreakOut(),&nbsp;.membank(zeroes[3:0]),&nbsp;.dbgmempswr(),<br />&nbsp;&nbsp;&nbsp;&nbsp;.TrigOut(),&nbsp;.AuxOut(),&nbsp;.TraceA(),&nbsp;.TraceDI(),&nbsp;.TraceDO(zeroes[19:0]),<br />&nbsp;&nbsp;&nbsp;&nbsp;.TraceWr());<br /><br />//例化单片机RAM模块<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RAM256X8&nbsp;&nbsp;internal_RAM(<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.WD(ramdatao),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.RD(ramdatai),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.WEN(ramwe),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.REN(ramoe),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.WADDR(ramaddr),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.RADDR(ramaddr),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.WCLK(mcuclk),<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.RCLK(nmcuclk)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br /><br />endmodule<br /><br />谢谢版主!<br /><br /><br />
zlgactel 发表于 2008-5-8 21:15 | 显示全部楼层

您好

您好,限于我们的时间和精力无法为您验证程序,我们给出的建议是:先用ModelSim仿真一下,调试的步骤:<br />1、准备的资料是:Core8051的用户手册,请对照Core8051于外部数据存储器的时序。<br />2、写一条最简单的访问外部RAM的指令,如movx&nbsp;@r0,a,然后编译生成HEX文件导入到工程FLASHMEM中。<br />3.仿真前把所有模块的输入端置为确定的状态,用Waveformer生成测试激励文件<br />4、打开ModelSim请观察memdatai&nbsp;memaddr是否有递增的变化确定MCU是否运行起来,然后再观察ramdatai16有数据输出吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

9

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部