




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于FPGA开发板的实201313/1是利用FPGA模块实现对逻辑门电路的调试。队员在实验的过程中,不仅学习了(HardwareDescriptionLanguage,硬件描述语言)ISEFPGA板子的结验,8255FPGA板子,大家都花费LEDLED灯,并且作FPGA模拟设置基础硬件,实现冯-诺依曼架构计算机基(3)8255实验:通过FPGA强大的功能实现了8255并行通讯,并且结合8255的设计 实验 FPGALED的功能。/LED(3)8255
RS232模块做串口通讯;8255模块为我们模拟的主要其中数据处理模块担负一切数据处理工作,他处理进入的数据,包括RS232的通讯数CPU写端口来改变对总线模块上的优先级进行编程,CPU每次输BUG,同时也易于对比本次实验所用XC3S50是Spartan3A系列中最的一款,总共50k逻辑门,70411KB,两个数字时钟管理单元,364个差分输出端口。MicroblazeDW8051软核,发现逻辑资源IOXC3S200就可以满足要求;但是基本可以满足实验的需求,而且轻量化的方便资源的分配,同时也避免了大面积造成的电路不稳定问题。80C51用用。总线的物理层为标准的双绞线和DB9接头RS232DB25接口,IBMPCRS-232DB9连接器,后来成为事实标准,DB25反而没有什么人应用了。现在绝大多数笔记本电脑上已经不再配备DB9串口接头,所以采用PL2303将串口转换USBUART功能。(1)CPUCPU18.432MHzCPU内部的软件上做改变。其实对于前两个实(2)8255CPU根据定义,825588D0~D782553个A、B、CA、B、C口及控制寄存器,故地址线为两根DBD0~D78255CPU8根据定义,82553A、B、C8825524(2)BPB0~PB782558(3)C口:编号为PC0~PC782558LEDLED8段共阴数码管,所以对应字符的每笔画端口拉高电平的时候,该笔画点1234567890对应输出端UART9600bit/s1120UCLK时钟周期。188个时钟周期,则认为起始以后,TXD端口要保持高电平,这样接收方才可以顺畅的接收到发送的数据。LED模块的输出。HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、eda软件进行设计时需要对其内部原verilogise为基础进行介绍hdlverilog写的程序实际上是写的一段实实在在edahdlverilog语言编好程序后,整个设计的基础算是打好了,在进行下一步逻辑综合之multisimeda软件ise只要在源文件的基础上再生成一个测试文件就可以进行仿真了。以下是仿真界面师只给出了功能描述,却没给出布线图,于是最后作出来的电路都是五花八门的。eda软件都要通过这一ise综合后得到的(rtl级模型(ise中,步骤会对选定的器件进行最终的配置,优化,布局布线,并产生可以到fpga中ise中这两个功能被包含在了一起eda软件的不同而有差异,但是对于以上eda适应起来也会相当快的。可编程输入/输出单元简称I/O单元,是与外界电路的接口部分,完成不气特性下对输入2-4FPGAI/O按组分类,物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。目前,I/O口的频率也越来FPGADDR2Gbps的数据速率。FPGA了。BIOSParallelPortEPP+ECP(增强型并口)模2ISECPU111CPU和中断控制器之间的联络线,CPU确实已经接1CPUNCPU需要的一系列寄存器,包括中断NNNNRNRIT_aa这里面包含了对应中断的中断号,或者中断向量N根据大小N应位置1.CPU和控制器约定好的。XilinxIDE漂亮和仿真方便(ISIM,虽然没有强大但是足够了毕竟就是看看波形之外和QuartusII比没有任何优势。另外,XC3S50slice704个,blockRAM4KBAltera同级别的飓风系列可以说性能上完全被秒杀就连Microblaze都没法运行导致XilinxSDKverilogC代码好一点,Verilog语言进行开发,当然就算是VHDL,其实区别也不是很大。关于这块板子的串口收发问题:直接接好的DB9接头无论如何都没有现象,而非直接接Verilog语法及使用方法,初步Verilog的初步应用。正是老师,助教同学对我的帮助,才能让我顺利完成实验。八.附8255moduleinputoutputwireregregselect_flag,write_flag,read_flag;reg[7:0]out_buf_1;reg[7:0]reg[7:0]reg[7:0]reg[5:0]clk_cout;regclk_range;wireclk_internal;reg[5:0]cout_wr;reg[5:0]reg[5:0]reg[5:0]reg[5:0]reg[5:0]cout_in_num;regin_wire_busy;regin_wire_buf;regin_sample;reg[7:0]core_buf;regregout_wire_busy;regout_sample;reg[5:0]assignclk_internal=clk_range;assignin_buf=in_serial;always(posedgeclkorposedgerst)
always@(posedgecs)always@(posedgewr)always@(posedgerd)always@(posedgeclk_internalorposedgerst)
if(!in_wire_busy&!in_wire_buf)elseif(cout==2)if(cout_in_num>0&&cout_in_num<9)elseif(cout_in_num==9)
elseelseif(cout_out==2)
8255
`timescale1ns///////Create 15:04:15//Design//Module //Project//Tool////////Revision0.01-File//Additionalmoduletop(///////////////Portdeclarations/////////////////////inputgclk;inputrst;input[7:0]sw;inputwr,rd;output[7:0]output[7:0]led2;outputint_btn;input[3:0]inout[7:0]wire[7:0]data_8255;wirecs_n,wr_n,rd_n,a1,a0,cs_8255,cs_button,cs_led1,cs_led2,rst_n;wire[7:0]pa;wire[7:0]wire[3:0]wire[3:0]wire[7:0]wire[7:0]wire[7:0]assigncs_8255=(addr_bus[2]&&!addr_bus[3])?1:0;assigna0=addr_bus[0];assignassigncs_led1=(addr_bus[3]&&!addr_bus[2]&&!addr_bus[1]&&!addr_bus[0])?1:0;assigncs_led2=(addr_bus[3]&&!addr_bus[2]&&!addr_bus[1]&&addr_bus[0])?1:0;assigncs_button=(addr_bus[3]&&!addr_bus[2]&&addr_bus[1]&&!addr_bus[0])?1:0;assignwr_n=~wr;assignrd_n=~rd;assignled1_in=pa;assignassignpch=sw_out[7:4];assignpcl=sw_out[3:0];assignrst_n=~rst;assigncs_n=~cs_8255;assigndata_bus=(!wr&&rd)?data_8255:8'hzz;assigndata_8255=(wr&&!rd)?top_8255top_8255(.cs_n(cs_n),.a1(a1),.a0(a0),_btn(int_btn),ledled module //reset //chipselect //writesignal //readsignal//datainput//controlCport//controlBport//controlAport//dataoutput inputfrominput//inputinput[7:0]d_inbuf,a_inbuf,b_inbuf;input[3:0]c_inbuf_high,c_inbuf_low;//outputcontroloutputreg//outputoutputreg[7:0]d_outbuf,a_outbuf,b_outbuf;outputreg[3:0]c_outbuf_high,c_outbuf_low;//internalsignalregcon;always@(posedgeclk,negedgerst_n)begina_port<=b_port<=c_port<=con<=a_mode_io<=b_mode_io<=1;r_w<=1;c_set_rst<=a_outbuf<=8'hff;b_outbuf<=8'hff;c_outbuf_high<=4'hf;c_outbuf_low<=4'hf;d_outbuf<=8'hff;else//A1.A0.csif(!cs_n)2'b00:2'b01:begin2'b10:begin2'b11:begin
elser_w<=(wr_n&&!rd_n&&!cs_n)?0:1;//r_w=0,read,r_w=1,write if(d_inbuf[7])begina_mode_io<=d_inbuf[4];
b_mode_io<=d_inbuf[1];c_upper_io<=d_inbuf[3];c_lower_io<=d_inbuf[0];c_set_rst<=0;elsec_set_rst<=//C3'b000:c_outbuf_low[0]<=d_inbuf[0];3'b001:c_outbuf_low[1]<=d_inbuf[0];3'b010:c_outbuf_low[2]<=d_inbuf[0];3'b011:c_outbuf_low[3]<=3'b100:c_outbuf_high[0]<=d_inbuf[0];3'b101:c_outbuf_high[1]<=d_inbuf[0];3'b110:c_outbuf_high[2]<=d_inbuf[0];3'b111:c_outbuf_high[3]<=
elsec_set_rst<=//Aif(a_port&&!a_mode_io)begina_outbuf<=d_inbuf;//Bif(b_port&&!b_mode_io)beginb_outbuf<=d_inbuf;//Cif(c_port&&!c_upper_io)beginc_outbuf_high<=d_inbuf[7:4];//Cif(c_port&&!c_lower_io)beginc_outbuf_low<=d_inbuf[3:0]; d_outbuf<=//Aif(a_port&&a_mode_io)begind_outbuf<=a_inbuf;//Bif(b_port&&b_mode_io)begind_outbuf<=b_inbuf;//Cif(c_port&&c_upper_io)begind_outbuf[7:4]<=c_inbuf_high;//Cif(c_port&&c_lower_io)begind_outbuf[3:0]<=c_inbuf_low;
`timescale1ns/
//////Create 20:56:25//Design//Module //Project//Tool////////Revision0.01-File//Additionalmoduleled(clk,rst,sw,led_out,cs);inputclk;inputrst;input[7:0]sw;inputcs;output[7:0]reg[7:0]reg[7:0]always@(posedgeclk)begin default:
if(cs)beginled_out<= module
inputclk;inputrst_n;inputcs_n;inputr_w;input[7:0]outputreg[7:0]d_inbuf;inoutwire[7:0]data_bus;//r_w=0,readport;r_w=1,writetoport data_bus=(!r_w)?d_outbuf:8'hzz;always@(posedgeclk,negedgerst_n)begind_inbuf<=elseif(r_w&&!cs_n)begind_inbuf<=data_bus; inputclk,c_port,c_set_rst,c_upper_io,c_lower_io,rst_n;input[3:0]c_outbuf_high,c_outbuf_low;outputreg[3:0]c_inbuf_high,c_inbuf_low;inout[3:0]c_bus_high,c_bus_low;//internalreg[3:0]//assignc_bus_high=(!c_upper_io)?c_out_high://assignc_bus_low=(!c_lower_io)?c_out_low:always@(posedgeclk,negedgerst_n)beginc_out_high<=4'hf;c_out_low<=4'hf;c_inbuf_high<=4'hx;c_inbuf_high<=elsec_out_high<=4'hf;c_inbuf_high<=elsec_out_high<=c_outbuf_high;c_inbuf_high<=4'hx;
c_out_low<=4'hf;c_inbuf_low<=c_bus_low;elsec_out_low<=c_outbuf_low;c_inbuf_low<=4'hx;elsec_inbuf_high<=4'hx;c_inbuf_low<=4'hx;c_out_high<=c_out_low<=
`timescale1ns/
//////Create 15:51:40//Design//Module //Project//Tool////////Revision0.01-File//Additionalmodulebutton(inputclk;input[7:0]sw;inputcs;outputint_btn;output[7:0]regreg[7:0]reg[7:0]sw_number;assignint_btn=int_sig;always@(posedge )beginint_sig<=1;sw_out<=8'b elseif(sw==8'b )beginint_sig<=1;sw_out<=8'b elseif(sw==8'b )beginint_sig<=1;sw_out<=8'b elseif(sw==8'b )beginint_sig<=1;sw_out<=8'b elseif(sw==8'b )beginint_sig<=1;sw_out<=8'b elseif(sw==8'b )beginint_sig<=1;sw_out<=8'b elseif(sw==8'b )beginint_sig<=1;sw_out<=8'b elseif(sw==8'b )beginint_sig<=1;sw_out<=8'b elsebeginint_sig<=0;sw_out<=8'b if(cs)begin`timescale1ns/
//////Create 15:51:40//Design//Module //Project//Tool////////Revision0.01-File//Additionalmodulebutton(inputclk;input[7:0]sw;inputcs;outputint_btn;output[7:0]regreg[7:0]reg[7:0]sw_number;assignint_btn=int_sig;always@(posedge )beginint_sig<=1;sw_out<=8'b elseif(sw==8'b )beginint_sig<=1;sw_out<=8'b elseif(sw==8'b )beginint_sig<=1;sw_out<=8'b elseif(sw==8'b )beginint_sig<=1;sw_out<=8'b elseif(sw==8'b )beginint_sig<=1;sw_out<=8'b elseif(sw==8'b )beginint_sig<=1;sw_out<=8'b elseif(sw==8'b )beginint_sig<=1;sw_out<=8'b elseif(sw==8'b )beginint_sig<=1;sw_out<=8'b elsebeginint_sig<=0;sw_out<=8'b if(cs)begin module
//control
inputclk,rst_n,a_port,a_mode_io;input[7:0]a_outbuf;output[7:0]a_inbuf;reg[7:0]a_inbuf;inout[7:0]a_bus;reg[7:0]a_out;//a-mode-io0 a_bus=(!a_mode_io)?a_out:8'hzz;always@(posedgeclk,negedgerst_n)begina_out<=8'hff;a_inbuf<=8'hxx;elsea_inbuf<=a_bus;a_out<=8'hff;elsea_out<=a_outbuf;a_inbuf<=8'hxx;elsea_inbuf<=
`timescale1ns///////Create 15:04:15//Design//Module //Project//Tool////////Revision0.01-File//Additionalmodule///////////////Portdeclarations/////////////////////inputuclk;inputinputuart0_rx;inputwr;inputinput[3:0]outputuart0_tx;outputrx_done;outputinout[7:0]wiretx_enable=1;wirewire[7:0]wireassigncs_uart=(addr_bus[3]&&!addr_bus[2]&&addr_bus[1]&&addr_bus[0])?1:0;assignld_tx_data=(wr&&cs_uart)?1:0;assignuld_rx_data=(rd&&assigndata_bus=(!wr&&rd)?rx_data:8'hzz;assigntx_data=(wr&&uart
.tx_done(tx_done),.rx_done(rx_done)`timescale1ns/
//////Create 15:04:15//Design//Module //Project//Tool////////Revision0.01-File//Additionalmoduletop(///////////////Portdeclarations/////////////////////inputgclk;input[7:0]sw;inputwr,rd;outputinput[3:0]inout[7:0]wire[7:0]sw_out;assigncs_button=(addr_bus[3]&&!addr_bus[2]&&addr_bus[1]&&!addr_bus[0])?1:0;assigndata_bus=(!wr&&rd)?sw_out:8'hzz;_btn(int_btn),`timescale1ns/
//////Create 15:51:40//Design//Module //Project//Tool////////Revision0.01-File//Additionalmodulebutton(inputclk;input[7:0]sw;inputcs;outputint_btn;output[7:0]regreg[7:0]reg[7:0]assignalways@(posedge)beginint_sig<=else)beginint_sig<=else)beginint_sig<=else)beginint_sig<=else)beginint_sig<=else)beginint_sig<=else)beginint_sig<=else)beginint_sig<=
elsebeginint_sig<=0;sw_out<=8'b if(cs)beginsw_number<=sw_out;endLED`timescale1ns///////Create 15:04:15//Design//Module //Project//Tool////////Revision0.01-File//Additionalmoduletop(///////////////Portinputgclk;inputrst;inputwr,rd;output[7:0]output[7:0]input[3:0]inout[7:0]wirecs_led1,cs_led2;wire[7:0]wire[7:0]assigncs_led1=(addr_bus[3]&&!addr_bus[2]&&!addr_bus[1]&&!addr_bus[0])?1:0;assigncs_led2=(addr_bus[3]&&!addr_bus[2]&&!addr_bus[1]&&addr_bus[0])?1:0;assignled1_in=(wr&&!rd)?data_bus:8'hzz;assignled2_in=(wr&&!rd)?ledled`timescale1ns/
//////Create 20:56:25//Design//Module //Project//Tool////////Revision0.01-File//Additionalmoduleled(clk,rst,sw,led_out,cs);inputclk;inputrst;input[7:0]sw;inputcs;output[7:0]reg[7:0]reg[7:0]always@(posedgeclk)begin default: if(cs)beginled_out<=CPU `timescale1ns///////Create 15:04:15//Design//Module //Project//Tool////////Revision0.01-File//Additionalmoduletop(///////////////Portdeclarations/////////////////////inputgclk;inputrst_in;input[3:0]ints;output[3:0]addr_bus;outputrst_out;outputwr;outputinout[7:0]wire[7:0]data_cpu;wire[7:0]assignassigndata_bus=(wr&&!rd)?data_cpu:8'hzz;assigndata_cpu=(!wr&&rd)?cpucpu( `timescale1ns///////Create 01:32:26//Design//Module //Project//Tool////////Revision0.01-File//Additional`defineADDR_8255_PB`defineADDR_8255_PC`defineADDR_LED1`defineADDR_LED2modulecpu(clk,rst_cpu,ints,rst,wr,rd, addr,data);inputclk;inputrst_cpu;input[3:0]ints;outputwr;outputrd;outputoutput[7:0]inout[7:0]data;regwr,rd,rst,cfg_8255;wireint_bank3,int_bank2_1,int_bank2_0,int_bank1; regreg[7:0]outbuf,inbuf;reg[1:0]int_btn_proc;regint_rx_proc;assigndata=(wr&&!rd)?outbuf:8'hzz;assignint_bank1=ints[3];assignint_bank2_1=ints[2];//tx_doneassignint_bank2_0=ints[1];//rx_doneassignint_bank3=ints[0];always@(posedgeclk,posedgerst_cpu)beginrst<=cnt1<=cnt2<=cnt3<=int_btn_proc<=int_rx_proc<=cfg_8255<=elserst<=//processbuttoninterruptif(int_btn_proc!=1)beginint_btn_proc<=2;//processing//readbuttonif(cnt2<10)begincnt2<=cnt2+addr<=`ADDR_BTN;wr<=0;rd<=inbuf<=data;outbuf<=inbuf;elseif(cnt2<20)begincnt2<=cnt2+1;addr<=8'hff;wr<=rd<=//writeelseif(cnt2<30)begincnt2<=cnt2+addr<=`ADDR_LED1;wr<=1;rd<=elseif(cnt2<=40)begincnt2<=cnt2+1;addr<=8'hff;wr<=rd<=//writeuarttoelseif(cnt2<=50)begincnt2<=cnt2+1; )beginoutbuf<=8'h31;end )beginoutbuf<=8'h32;end )beginoutbuf<=8'h34;end )beginoutbuf<=8'h35;end )beginoutbuf<=8'h36;end )beginoutbuf<=8'h37;end )beginelseif(cnt2<=60)begincnt2<=cnt2+1;addr<=`ADDR_UART;wr<=1;rd<=elseif(cnt2<=70)begincnt2<=cnt2+1;addr<=8'hff;wr<=rd<=else
cnt2<=int_btn_proc<=1;//processelseint_btn_proc<=0;//nobuttoninterruptcnt2<=0;//processuartrxinterruptint_rx_proc<=1;//processingcnt3<=cnt3+1;wr<=rd<=addr<=`ADDR_UART;inbuf<=data;outbuf<=else//readif(cnt3<10)begincnt3<=cnt3+1;wr<=0;rd<=addr<=`ADDR_UART;inbuf<=data;outbuf<=elseif(cnt3<20)begincnt3<=cnt3+1;addr<=8'hff;wr<=rd<=//writeelseif(cnt3<30)begincnt3<=cnt3+addr<=`ADDR_UART;wr<=1;rd<=elseif(cnt3<40)begincnt3<=cnt3+1;if(outbuf==8'h31)beginoutbuf<=8'b if(outbuf==8'h32)beginoutbuf<=8'b if(outbuf==8'h33)beginoutbuf<=8'b if(outbuf==8'h34)beginoutbuf<=8'b if(outbuf==8'h35)beginoutbuf<=8'b if(outbuf==8'h36)beginoutbuf<=8'b if(outbuf==8'h37)beginoutbuf<=8'b //writeelseif(cnt3<50)begincnt3<=cnt3+addr<=`ADDR_LED2;wr<=1;rd<=elsecnt3<=0;addr<=8'hff;wr<=0;rd<=int_rx_proc<=0;//process
CPU`timescale1ns/
//////Create 15:04:15//Design//Module //Project//Tool////////Revision0.01-File//Additionalmoduletop(///////////////Portdeclarations/////////////////////inputgclk;inputrst_in;input[3:0]ints;output[3:0]addr_bus;outputrst_out;outputwr;outputinout[7:0]wire[7:0]data_cpu;wire[7:0]assignassigndata_bus=(wr&&!rd)?data_cpu:8'hzz;assigndata_cpu=(!wr&&rd)?cpucpu(`timescale1ns/
//////Create 01:32:26//Design//Module //Project//Tool////////Revision0.01-File//Additional`defineADDR_8255_PB`defineADDR_8255_PC`defineADDR_LED1`defineADDR_LED2modulecpu(clk,rst_cpu,ints,rst,wr,rd, addr,data);inputclk;inputrst_cpu;input[3:0]ints;outputwr;outputrd;outputoutput[7:0]inout[7:0]data;regwireint_bank3,int_bank2_1,int_bank2_0,int_bank1; regreg[7:0]outbuf,inbuf;reg[1:0]int_btn_proc;regint_rx_proc;assigndata=(wr&&!rd)?outbuf:8'hzz;assignint_bank1=ints[3];assignint_bank2_1=ints[2];//tx_doneassignint_bank2_0=ints[1];//rx_doneassignint_bank3=ints[0];always@(posedgeclk,posedgerst_cpu)beginrst<=cnt1<=cnt2<=cnt3<=int_btn_proc<=int_rx_proc<=cfg_8255<=elserst<=//configure8255: if(cnt1<10)begincnt1<=cnt1+1;addr<=`ADDR_8255_CFG;outbuf<=8'h89;wr<=rd<=elsecnt1<=0;addr<=8'hff;wr<=0;
rd<=cfg_8255<=//processbuttoninterruptif(int_btn_proc!=1)beginint_btn_proc<=2;//processing//readbuttonif(cnt2<10)begincnt2<=cnt2+addr<=elseif(cnt2<20)begincnt2<=cnt2+addr<=`ADDR_8255_PC;wr<=0;rd<=inbuf<=data;outbuf<=inbuf;elseif(cnt2<30)begincnt2<=cnt2+1;addr<=8'hff;wr<=rd<=//write8255PORTAelseif(cnt2<cnt2<=cnt2+addr<=`ADDR_8255_PA;wr<=1;rd<=elseif(cnt2<50)begincnt2<=cnt2+addr<=`ADDR_LED1;wr<=0;rd<=elseif(cnt2<=60)begincnt2<=cnt2+1;addr<=8'hff;wr<=rd<=//writeuarttoelseif(cnt2<=70)begincnt2<=cnt2+1; )beginoutbuf<=8'h31;end )beginoutbuf<=8'h32;end )beginoutbuf<=8'h33;end )beginoutbuf<=8'h34;end )beginoutbuf<=8'h35;end )beginoutbuf<=8'h36;end )beginoutbuf<=8'h37;end )beginelseif(cnt2<=80)begincnt2<=cnt2+1;addr<=`ADDR_UART;wr<=1;rd<=elseif(cnt2<=90)begincnt2<=cnt2+1;addr<=8'hff;wr<=rd<=elsecnt2<=int_btn_proc<=1;//process
elseint_btn_proc<=0;//nobuttoninterruptcnt2<=0;//processuartrxinterruptint_rx_proc<=1;//processingcnt3<=cnt3+1;wr<=rd<=
addr<=`ADDR_UART;inbuf<=data;outbuf<=else//readif(cnt3<10)begincnt3<=cnt3+1;wr<=0;rd<=addr<=`ADDR_UART;inbuf<=data;outbuf<=elseif(cnt3<20)begincnt3<=cnt3+1;addr<=8'hff;wr<=rd<=//writeelseif(cnt3<30)begincnt3<=cnt3+addr<=`ADDR_UART;wr<=1;rd<=elseif(cnt3<40)begincnt3<=cnt3+1;addr<=8'hff;wr<=rd<=//writeelseif(cnt3<50)begincnt3<=cnt3+addr<=`ADDR_8255_PB;wr<=1;rd<=elseif(cnt3<60)begincnt3<=cnt3+if(outbuf==8'h31)beginoutbuf<=8'b
if(outbuf==8'h33)beginoutbuf<=8'b if(outbuf==8'h34)beginoutbuf<=8'b if(outbuf==8'h35)beginoutbuf<=8'b if(outbuf==8'h36)beginoutbuf<=8'b if(outbuf==8'h37)beginoutbuf<=8'b elseif(cnt3<70)begincnt3<=cnt3+addr<=`ADDR_LED2;wr<=0;rd<=elsecnt3<=0;addr<=8'hff;wr<=0;rd<=int_rx_proc<=0;//process
`timescale1ns/
//////Create 15:57:38//Design//Module //Project//Tool////////Revision0.01-File//Additionalinputdata_in,clk,rst,in_enable,rx_in,uclk,uart_sign;outputdata_out,address_out,enable,tx_out;wire[7:0]data_in;wireclk;wirewirein_enable;wirerx_in;wireuart_sign;reg[7:0]reg[7:0]address_out;regenable;reg[7:0]wire[7:0]reg[7:0]reg[7:0]wireuld_rx_data;wireld_rx_data;wiretx_done;wirerx_done;wiretx_enable;wirerx_enable;reg[7:0]reg[31:0]cout;regrx_load_flag;regtx_load_flag;regtx_flag;regalways@(posedgealways@(posedgetx_done)assignuld_rx_data=rx_load_flag;assignld_tx_data=tx_load_flag;assignrx_enable=rx_flag;assignalways@(posedgeclkorposedgerst)elseif(rx_buf<temp) : : : : : : : :data_out<=8'h07;default:data_out<=8'h71;endcase//case
uartuart `timescale1ns///////Create 15:10:24//Design//Module //Project//Tool////////Revision0.01-File//Additionalmoduleuart( //Port [7:0]tx_data output[7:0]rx_data ;;;//Internalreg reg[3:0] reg wire[7:0] ;reg reg[3:0] reg[15:0] regsample;regassignrx_data=(uld_rx_data)?//UARTRXalways@(posedgeclkorposedgereset)if(reset)begin <= <=8'h00;t<=0; <= <= <= <= <=rx_d1<=sample<=0;endelsebeginrx_d1<=//Uloadtherxif(uld_rx_data)//rx_data <=rx_reg;rx_done<=0;//Receivedataonlywhenrxisenabledif(rx_enable)begin//Checkifjustreceivedstartofframeif(!rx_busy&&!rx_d1)begin <=t<= <=rx_done<=//Startofframedetected,Proceedwithrestofdataif(rx_busy)begint t+ t== t<=//Logictosampleatmiddleofdataif( t==960)begin//200sample<=if((rx_d1==1)&&( t==0))beginrx_busy<=0;rx_done<=0;endelset t+1;rx_done<=//Startstoringtherxif( t>0&& t<9)begin t-1]<=rx_d1;if( t==9)beginrx_busy<=0;//CheckifEndofframereceivedcorrectlyif(rx_d1==0)beginrx_frame_err<=1;endelsebeginrx_done<=rx_frame_err<=//Chec
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 液力机械的流体动力特性分析考核试卷
- 3-9数据选择器2电子课件教学版
- 笔的制造业国际市场拓展与贸易实务考核试卷
- 皮革物理性能测试方法与设备考核试卷
- 教案新人教版高一语文必修1第四单元训练卷
- 煤炭直接燃烧与污染控制技术考核试卷
- 一年级数学上册《常考试题》
- 慢性阻塞性肺疾病诊断与治疗 2
- 山东省平原县第一中学2024-2025学年高一下学期3月月考 数学试题【含答案】
- 临床骨折救治应急预案
- 广州市黄埔区教育局招聘事业编制教职员考试真题2024
- 2025世界防治哮喘日知识讲座专题课件
- 粮食安全时政试题及答案
- 小学开展常规教育经验交流活动方案
- 第四单元专题学习《孝亲敬老传承家风》公开课一等奖创新教学设计-(同步教学)统编版语文七年级下册名师备课系列
- 2025年03月四川成都农业科技中心公开招聘笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2024年郑州铁路职业技术学院单招职业技能测试题库必考题
- 全过程工程咨询投标方案(技术方案)
- 2025团校入团培训考试题库(含答案)
- GB 14934-2016食品安全国家标准消毒餐(饮)具
- 自然辩证法(2023修订版)课后思考题
评论
0/150
提交评论