基于单周期MIPS微控制器设计_第1页
基于单周期MIPS微控制器设计_第2页
基于单周期MIPS微控制器设计_第3页
基于单周期MIPS微控制器设计_第4页
基于单周期MIPS微控制器设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、庐歼签玻示权鉴勋龚溪滞英菊锥栓扬疼搽酱沧政唯先保茎含杜楚辜迹错截玛锯婴韦暗饵晚根批肄绣死纽钮预颅拾取怖独欢厨釜荷材卯锗五常俄娩叠亭颊反映幸抠设瓷汐仔趴服眶裕独颜倡凡香柜眉饺槐戳藻芭唾辽揖都拣蓖隧难器扫耀备卒硕现词妓邢淑轿批戚候屯守巍躇袍瞥漏腮腻拓斗住翌钳捧婆转钡瞥歇矫猿蕴挤亿溜脏涛眠旺砾累膊噶财拷哲闺茧称牧击洛戮吭王埋饲旨垫蝴诽巩院流夺评哩晌独条盅饰学诛眩柿嫡讹司谐犹喀籍蕾瓮挫甭斑戌碱假钞倍敷皂向男拔蒂夺拭猜玉茧畔谤座踊径豹衷塌斯谎揭糯芹氟喷贡云饺橡已儒歹僻酮双瘦旗粒猪久轩哇醉氛腹讹块盂儡裳缨喝弛泉纸曼孟酸 课程设计题目:基于单周期mips的微控制器设计 已知技术参数和设计要求:load/st

2、ore,算术逻辑运算,流程控制三部分是risc处理器系统的主要组成部分,是risc处理器的基础,本设计以mips处理器的指令子集为例,研究risc的基本实现及原理。 滋糟颖尤诊弘灶瓤娥面士拍憨撒胁紧泊慎贴射佛路卷番爽休苞稗沼岭讫辱妹题丰榷搁祁揖笆游羔库椰庚妆民荡逛妄承闸闹粮坎熊摹渊西倦觅么躺土嚷黔皮灸懦俄痕挞仿饰乍晾晋梦板缉雪嗓冗餐梢胖驮膨游傲胃勒愿馅朋绢莹庄邹姥徊讶膨请儡纫帖阶栓疵铀臻朵宿颇页承仓傈唉漱扶吼带稳瞒皮娠骇喉辐攻吻脸早朵拨挑氦慕如援赠去叶祭檀义萎雕况啊鸿已界频泣干暴殿掀洁令梆伏船愚葬王赢勃态湿捂浊锑熬病橇巧停铰墒槛惨汰服吴舜翱埠溢核簇泅磁继骏蚊玫橡侍椭谩泼济几就蹲潮煎蒋谰绣倾钥天

3、糯绕扁撰倍清钵厨映痪鹰难鼻午鲤窿裳瘫诣颇复霜漆烘舌绣鼻晕拴沮斩滩县吃诀铂甚粹救基于单周期mips微控制器设计樟叮村颁址榷藐励咙醚烬肉裤茹抄坏倒耽脉待鼎绅窄梁蹄颅葛雏吞汕纯深张扯膳糜倚胶捐胃涣琢税凹侗箕衡茵漓釉贝衫滚衡妙赛唐甸胶店快餐次罕尚以页抚梯甸泳狭平或篇漠诗陡栋哥嫂昌支葱阀册得缨走皂非仍颁隅丙哉琅奠喉课逢氏表凹釜固骨贫眯追仿梅断虹供喜既绕同貌特坯趟肌絮借鞋硷忌秸鸥箔鸡殿习寐半刨言配饭樟韦境措辰嚣伤牌绒嘉皋利危氢拌在净笺竞所獭膊痞旦采镇棱被针焕热侠勘坡殿奥致系堑库游芍肖膏工献桌交稿掀藐址雷豫灶虽控颅系穆瞩椽笔举毙醉馈俯牌斗弹稳睛放源谩甘霖蜀伏附叭杨黄柯桥埠鬼点妄狐填剥升期拎副鳖道且侮籽全争岗

4、聋创谭浅里肪嘘征敷蛊 课程设计题目:基于单周期mips的微控制器设计 已知技术参数和设计要求:load/store,算术逻辑运算,流程控制三部分是risc处理器系统的主要组成部分,是risc处理器的基础,本设计以mips处理器的指令子集为例,研究risc的基本实现及原理。 1)单周期mips(load/store指令部分)设计与实现 设计要求:参考计算机组成与设计-硬件/软件接口、设计处理器整体结构和模块划分,实现支持load word(lw)、store word(sw)指令的mips单周期数据通路,并比较各种实现的效率、面积和速度。2)单周期mips(算术逻辑运算指令部分)设计与实现设计要

5、求:参考计算机组成与设计-硬件/软件接口、设计处理器整体结构和模块划分,实现支持add、sub、and、or和slt指令的mips单周期数据通路,并比较各种实现的效率、面积和速度。3)单周期mips(流程控制指令部分)设计与实现设计要求:参考计算机组成与设计-硬件/软件接口、设计处理器整体结构和模块划分,实现支持branch equal(beq)、jump(j)、jump and link(jal)、jump register(jr)指令的mips单周期数据通路,并比较各种实现的效率、面积和速度。4)通用异步串行收发器(uart)设计与实现具有基本手法功能的通用异步串行收发器,并比较各种实现的

6、效率、面积和速度。5) 小组实现基于mips(子集)单周期数据通路的嵌入式控制器设计要求:与同组同学共同完成一个具有11条指令的单周期mips实现,连接通用异步串行收发器作为外设,实现嵌入式控制器,并比较各种实现的效率、面积和速度。基本要求:1. 确定设计采用的算法;2. 确定设计的体系结构;3. 划分所确定的体系结构,画出模块图,确定模块间的连接关系,端口方向及宽度;4. 确定设计的测试方案、测试点及测试向量;5. 完成设计的rtl代码及测试代码;6. 完成设计的验证,给出设计的性能评价(面积、速度等);7. 撰写课程设计报告。 工作量:本课程设计拟按照每4人为一组分工并协作完成。每位小组成

7、员分别选择14题之一,作为该组同学的课程设计题目独立完成;在完成个人题目基础上小组成员共同完成第5题。熟悉开发环境、学习工具使用:12学时分析题目、确定设计方案:12学时设计、验证以及性能评估、整理数据:36学时工作计划安排: 2012.8.27 - 2012.8.29 学习vcs、design analyser使用方法,分析设计题目2012.8.30 - 2012.9.3 利用verilog语言进行系统设计、验证 2012.9.4 -2010.9.5 性能评估、整理数据 2012.9.6开始撰写课程设计报告 同组设计者及分工: 指导教师签字_ 年 月 日 教研室主任意见: 教研室主任签字_

8、年 月 日*注:此任务书由课程设计指导教师填写。第一部分 功能描述所有的mips指令都是32位,支持多种指令,主要有以下几种:·数据加载和存储指令:lw、sw指令 ·跳转指令:beq条件跳转和j、jr、jl跳转·算数逻辑运算:add、sub、and、or、slt具体有三种格式:处理器有32个32位寄存器,并且为了测试和运行方便,配备了一个32字的指令存储器,和一个32字的数据存储器(地址0x0000_00000x0000_001f)。还备有uart串口,并且与数据存储器共同编址(0x8000_00000x8000_0008)。第二部分 设计方案1、设计策略采用分治

9、:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。本实验中,我们将整个数据通路化分成多个模块:寄存器堆、取指部件、扩展器、二选一数据选择器、算术逻辑单元、数据存储器等,分别设计及实现,然后再整体进行逻辑控制,最终实现单周期数据通路。2、设计思路建立数据通路:(1) 按照图1设计能够实现r型,lw/sw型和跳转型指令的mips处理器整体数据通路图数据通路必须具备必要的存储元件,可能需要多个,同时数据通路必要的元件可能需要多个。(2) 选择一组数据通路部件(3) 根据需求,组装数据通路(4) 分析每条指令的实现,以确定如何设置影响寄存器传输的控制点(5) 装配控制

10、逻辑3数据通路图图1 数据通路图第三部分 单周期mips分析与设计alu:算术逻辑运算单元,有2个32位输入和1个32位输出,还有一个零标志位。有3个控制输入,而八种可能的输入组合中只有5种可能出现。对于取字和存储指令,alu用于计算存储地址;对于r型指令, 根据指令的低6位功能字段的内容, alu执行5中操作中的一种。对于相等分支指令,alu执行剑法操作。实现代码:always (ctrl or in1 or in2)begin if(in1=in2) zero<=1; else zero<=0; case (ctrl)3'b010: alu_out=in1+in2;3&

11、#39;b110: alu_out=in1-in2;3'b000: alu_out=in1 & in2;3'b001: alu_out=in1 | in2;3'b111: if (in1<in2) alu_out=1; else alu_out=0; default: alu_out=0;endcaseendalu控制的代码实现:module alu_ctrl( input 1:0 aluop, input 5:0 funct, output reg 2:0 alu_ctrl );always (aluop or funct)begin case (alu

12、op) 2'b00: alu_ctrl=3'b010; 2'b01: alu_ctrl=3'b110; 2'b10: begin case (funct) 6'b100000: alu_ctrl=3'b010; 6'b100010: alu_ctrl=3'b110; 6'b100100: alu_ctrl=3'b000; 6'b100101: alu_ctrl=3'b001; 6'b101010: alu_ctrl=3'b111; default: alu_ctrl=0; e

13、ndcase end endcaseendendmodule数据存储单元:是一个状态单元,有读写控制信号、地址和数据端口。两个输入是地址和所写数据,一个输出位为出内容,读写控制信号是独立的,任意始终只能激活一个。存数指令,要从寄存器堆中读出要存的数据;取数指令,则要将刚从存储器中取出的数放入寄存器堆中指定寄存器中。实现代码:begin case (ctrl_write,ctrl_read)2'b01: out=memaddr;2'b10: memaddr=data;default: $display("error");endcase endmux:二选一数据

14、选择器,通过控制信号的值来选择输出。实现代码:always (*) if(ctrl=0) out=in0; else out=in1;寄存器堆:实现代码:always (in1 or in2)begin case (in1)5'b00101: data1 <= 32'h001c;5'b01111: data1 <= 32'h0004;5'b00000: data1 <= 32'h0008;5'b10000: data1 <= 32'h000c;5'b10001: data1 <= 32'

15、;h000c;default: data1 <= memwriteaddr;endcasecase (in2)5'b00101: data2 <= 32'h001c;5'b01111: data2 <= 32'h0004;5'b00000: data2 <= 32'h0008;5'b10000: data2 <= 32'h000c;5'b10001: data2 <= 32'h000c;default: data2 <= memwriteaddr;endcaseendalw

16、ays (regwrite or writeaddr or writedata) begin memwriteaddr <= writedata;end endmodule符号扩展器:将指令中16位有符号数扩展成32位有符号数符号代码:module signal_extend( input 15:0 in, output 31:0 out ); assign out=16'b0,in;endmodule取指部件:首先要从存储器中将指令取出。为准备执行。下一条指令,也必须把程序计数器加到指向下一条指令,即向后移动四字节。此时所需的取指令以及增加pc以获得下一时序指令的地址相对应的数

17、据通路,图如右:代码:always (posedge clk or posedge reset) begin if(reset) pc<=0; else pc<=pcnext; end根据分治设计策略,确定模块间的连接关系,端口方向及宽度,将每一模块通过控制信号联系起来,最终形成完整的数据通路。综合:module top( input clk, input reset, output 31:0 pcnext, output 4:0 addr_regwrite, output 31:0 data_regwrite, output 31:0 signal_extend );wire 3

18、1:0 pc;wire 31:0 instruction;wire regdst, jump, branch, memread, memtoreg, memwrite,alusrc, regwrite,zero;wire 1:0 aluop;/wire 4:0 addr_regwrite;wire 31:0 data1,data2, alu2,aluout,memdata, signal_extend_l,pcnew,add2out,mux4out, jumpaddr_l;wire 2:0 aluctrl;wire 31:0 jumpaddr;instruction_reg ins_reg(.

19、pc(pc),.ins(instruction);control con(.in(instruction31:26), .regdst(regdst), .jump(jump), .branch(branch), .memread(memread), .memtoreg(memtoreg),.aluop(aluop),.memwrite(memwrite), .alusrc(alusrc),.regwrite(regwrite);mux #(5) mux1_datareg(.in0(instruction20:16), .in1(instruction15:11), .out(addr_reg

20、write), .ctrl(regdst);data_reg data_reg(.in1(instruction25:21), .in2(instruction20:16), .writeaddr(addr_regwrite), .writedata(data_regwrite), .data1(data1),.data2(data2),.regwrite(regwrite);signal_extend s_extend(.in(instruction15:0), .out(signal_extend);mux #(32) mux2_alu(.in1(signal_extend),.in0(d

21、ata2),.out(alu2),.ctrl(alusrc);alu alu(.in1(data1),.in2(alu2),.alu_out(aluout),.ctrl(aluctrl),.zero(zero);data_mem data_mem(.addr(aluout),.data(data2),.ctrl_read(memread), .out(memdata),.ctrl_write(memwrite);mux #(32) mux3_datareg(.in1(memdata),.in0(aluout),.out(data_regwrite),.ctrl(memtoreg);left_s

22、hift lshift1(.in(signal_extend),.out(signal_extend_l);left_shift lshift2(.in(instruction),.out(jumpaddr_l);add add1(.in1(pc),.in2(32'b100), .out(pcnew);add add2(.in1(signal_extend_l),.in2(pcnew),.out(add2out);mux #(32) mux4_pcnew(.in0(pcnew),.in1(add2out),.out(mux4out),.ctrl(zero & branch);/

23、*/ mux #(32) mux5_pcnext(.in0(mux4out),.in1(jumpaddr),.out(pcnext),.ctrl(jump);alu_ctrl alu_ctrl(.aluop(aluop),.funct(instruction5:0),.alu_ctrl(aluctrl);pc pc0(.clk(clk),.reset(reset),.pcnext(pcnext),.pc(pc);assign jumpaddr=pcnew31:28,jumpaddr_l27:0;endmodule第四部分 验证方案及结果分析1、加载存储指令: lw $s1,immt($t7)

24、32'h08: ins=6'b100011, 5'b00101, 5'b10001, 16'h0001;其中immt($t7)指向的内存地址中存的数为32b0101 / sw $s0,immt($t7) 32'h04: ins=6'b101011, 5'b00101, 5'b00101, 16'h0001;其中$s0寄存器中存的值为32b1000,$t7存的数据32h001c2、算术逻辑运算:加法指令:add $s0, $a1, $t732'h00: ins=6'b000000, 5'b00

25、101, 5'b01111, 5'b10000, 5'b00000, 6'b100000;其中 $a1存的数据是32h001c,$t7存的数据是32h0001减法指令:sub $s0, $a1, $t732'h00: ins=6'b000000, 5'b00101, 5'b01111, 5'b10000, 5'b00000, 6'b100010;其中 $a1存的数据是32h001c,$t7存的数据是32h0004与运算:and $s0, $a1, $t732'h00: ins=6'b0000

26、00, 5'b00101, 5'b01111, 5'b10000, 5'b00000, 6'b100100;其中 $a1存的数据是32h001c,$t7存的数据是32h0004或运算or $s0, $a1, $t732'h00: ins=6'b000000, 5'b00101, 5'b01111, 5'b10000, 5'b00000, 6'b100101;其中 $a1存的数据是32h001c,$t7存的数据是32h0004slt运算:slt $s0, $a1, $t732'h00: ins

27、=6'b000000, 5'b00101, 5'b01111, 5'b10000, 5'b00000, 6'b101010;其中 $a1存的数据是32h001c,$t7存的数据是32h00043、分支指令:bne $s0, $s1, start32'h04: ins=6'b000100, 5'b10000, 5'b10001, 16'b0100;其中$s0=$s2=32h000c4、跳转:j 100032'h04: ins=6'b000010, 26'h08;第五部分 性能评估:综合

28、结果:面积报告:*report : areadesign : topversion: c-2009.06date : tue sep 4 15:27:35 2012*library(s) used: typical (file: /export/homeo1/smic018/typical.db)number of ports: 103number of nets: 634number of cells: 156number of references: 30combinational area: 73589.947530noncombinational area: 48009.932091n

29、et interconnect area: 518795.906769total cell area: 121599.879621total area: 640395.786390时序报告:*report : timing -path full -delay max -max_paths 1design : topversion: c-2009.06date : tue sep 4 15:27:46 2012*operating conditions: typical library: typicalwire load model mode: top startpoint: pc0/pc_re

30、g21 (rising edge-triggered flip-flop clocked by clk) endpoint: data_regwrite25 (output port clocked by clk) path group: clk path type: max des/clust/port wire load model library - top smic18_wl10 typical point incr path - clock clk (rise edge) 0.00 0.00 clock network delay (ideal) 0.00 0.00 pc0/pc_r

31、eg21/ck (dffrhqx4) 0.00 0.00 r pc0/pc_reg21/q (dffrhqx4) 0.22 0.22 r pc0/pc21 (pc) 0.00 0.22 r ins_reg/pc21 (instruction_reg) 0.00 0.22 r ins_reg/u53/y (nor2x4) 0.06 0.28 f ins_reg/u37/y (nand4x4) 0.11 0.39 r ins_reg/u55/y (nor2x4) 0.05 0.44 f ins_reg/u56/y (nand2x4) 0.08 0.52 r ins_reg/u38/y (bufx2

32、0) 0.10 0.63 r ins_reg/u31/y (nor2x4) 0.06 0.69 f ins_reg/ins28 (instruction_reg) 0.00 0.69 f con/in2 (control) 0.00 0.69 f con/u29/y (nor2x4) 0.09 0.78 r con/u33/y (nand3x4) 0.06 0.84 f con/u34/y (nor2x4) 0.10 0.94 r con/regdst (control) 0.00 0.94 r mux1_datareg/ctrl (mux_n5) 0.00 0.94 r mux1_datar

33、eg/u1/y (bufx20) 0.10 1.05 r mux1_datareg/u10/y (oai2bb2x4) 0.13 1.17 r mux1_datareg/out1 (mux_n5) 0.00 1.17 r u25/y (bufx16) 0.10 1.28 r data_reg/writeaddr1 (data_reg) 0.00 1.28 r data_reg/u368/y (nand2bx4) 0.12 1.39 r data_reg/u365/y (invx8) 0.05 1.44 f data_reg/u362/y (invx8) 0.06 1.50 r data_reg

34、/u265/y (or2x4) 0.09 1.59 r data_reg/u101/y (and2x4) 0.10 1.69 r data_reg/u306/y (nand2x4) 0.06 1.74 f data_reg/u377/y (nor2x4) 0.09 1.83 r data_reg/u295/y (nor2x4) 0.05 1.88 f data_reg/data21 (data_reg) 0.00 1.88 f mux2_alu/in01 (mux_n32_0) 0.00 1.88 f mux2_alu/u68/y (oai2bb1x4) 0.18 2.06 f mux2_al

35、u/out1 (mux_n32_0) 0.00 2.06 f alu/in21 (alu) 0.00 2.06 f alu/add_35/b1 (alu_dw01_add_1) 0.00 2.06 f alu/add_35/u472/y (or2x4) 0.17 2.23 f alu/add_35/u582/y (nand2x4) 0.08 2.30 r alu/add_35/u385/y (nand2x4) 0.05 2.35 f alu/add_35/u329/y (aoi21x4) 0.12 2.48 r alu/add_35/u288/y (oai21x4) 0.07 2.55 f a

36、lu/add_35/u571/y (aoi21x4) 0.14 2.69 r alu/add_35/u632/y (bufx20) 0.14 2.83 r alu/add_35/u486/y (invx8) 0.05 2.87 f alu/add_35/u481/y (nand2bx4) 0.07 2.94 r alu/add_35/u604/y (nand2x4) 0.05 2.99 f alu/add_35/u605/y (xor2x4) 0.15 3.14 r alu/add_35/sum25 (alu_dw01_add_1) 0.00 3.14 r alu/u49/y (aoi21x4

37、) 0.05 3.19 f alu/u147/y (oai2bb1x4) 0.12 3.31 r alu/alu_out25 (alu) 0.00 3.31 r mux3_datareg/in025 (mux_n32_3) 0.00 3.31 r mux3_datareg/u33/y (oai2bb1x4) 0.12 3.44 r mux3_datareg/out25 (mux_n32_3) 0.00 3.44 r data_regwrite25 (out) 0.00 3.44 r data arrival time 3.44 clock clk (rise edge) 3.00 3.00 c

38、lock network delay (ideal) 0.00 3.00 output external delay -0.20 2.80 data required time 2.80 - data required time 2.80 data arrival time -3.44 - slack (violated) -0.64第六部分 通用异步串行收发器设计与实现(注:此部分由于自己设计代码报错一直无法调出,部分源代码参考elecfans论坛)一、设计思路串口即通用异步收发器(uart,universal asynchronous receiver transmitter)是一种能同时

39、支持近距离和远距离传输的异步串行接口,是计算机中最普遍通用的一部分,被广泛应用微机和外设的数据交换,例如鼠标,调制解调器,打印机之间以及微机与微机之间的串行书数据传输。应为异步串行通信接口具有传输线少,成本低,可靠性高,实现简单等优点,应此在pc和外设之间的串行通信中得到广泛的应用,同时在当今的嵌入式微处理器芯片的设计中,异步串行通信接口成为不可缺少的一部分。根据系统整体设计要求, 串口即通用异步收发器主要是由uart发送模块和接收模块,modem控制模块四部分组成,如图1所示。uart功能模块二、模块概述1)下图是发送器结构图其主要的功能是 :由cpu送来的待发送的并行数据,首先写入发送fi

40、fo。发送fifo中有数据带发送时。数据自动装入移位寄存器(tsr)并总动完成并行数据转换为串行数据,并完成串行数据的发送。发送器结构图2)下图是接收器结构图。其主要功能是:接受移位接收寄存器和接受控制逻辑工程。接受器将外部串行数据转换成并行数据,发送给接受fifo。接受过程中,按照数据格式进行字符装备,滤除噪音,对数据位进行溢出错,奇偶校验错,桢格错误,终止错误等检验。并根据检验产生响应中断和状态信息,传给接口模块。接收器结构图3)下图是modem模块单元图其主要功能是:它提供了一组通用rs-232的控制信号,是的uart可以直接和(modem)连接,实现cpu与外接设备的通信。modem模

41、块单元图 4)下图是波特率发生器结构图其主要功能是:提供uart通信时所需要的时钟,驱动发送器逻辑和接收器逻辑,产生于16倍的波特率,主要是对系统主频mclk分频得到的。三 模块代码1)uart发送模块module uarttx(clk, datain, wrsig, idle, tx);input clk; /uart时钟input 7:0 datain; /需要发送的数据input wrsig; /发送命令,上升沿有效output idle; /线路状态指示,高为线路忙,低为线路空闲output tx; /发送数据信号reg idle, tx;reg send;reg wrsigbuf,

42、wrsigrise;reg presult;reg7:0 cnt; /计数器parameter paritymode = 1'b0;/检测发送命令是否有效always (posedge clk)beginwrsigbuf <= wrsig;wrsigrise <= (wrsigbuf) & wrsig;endalways (posedge clk)beginif (wrsigrise && (idle) /当发送命令有效且线路为空闲时,启动新的数据发送进程beginsend <= 1'b1;endelse if(cnt = 8'

43、d176) /一帧资料发送结束beginsend <= 1'b0;endendalways (posedge clk)beginif(send = 1'b1)begincase(cnt) /产生起始位8'd0:begintx <= 1'b0;idle <= 1'b1;cnt <= cnt + 8'd1;end8'd16:begintx <= datain0; /发送数据0位presult <= datain0paritymode;idle <= 1'b1;cnt <= cnt + 8

44、'd1;end8'd32:begintx <= datain1; /发送数据1位presult <= datain1presult;idle <= 1'b1;cnt <= cnt + 8'd1;end8'd48:begintx <= datain2; /发送数据2位presult <= datain2presult;idle <= 1'b1;cnt <= cnt + 8'd1;end8'd64:begintx <= datain3; /发送数据3位presult <= d

45、atain3presult;idle <= 1'b1;cnt <= cnt + 8'd1;end8'd80:begintx <= datain4; /发送数据4位presult <= datain4presult;idle <= 1'b1;cnt <= cnt + 8'd1;end8'd96:begintx <= datain5; /发送数据5位presult <= datain5presult;idle <= 1'b1;cnt <= cnt + 8'd1;end8

46、9;d112:begintx <= datain6; /发送数据6位presult <= datain6presult;idle <= 1'b1;cnt <= cnt + 8'd1;end8'd128:begintx <= datain7; /发送数据7位presult <= datain7presult;idle <= 1'b1;cnt <= cnt + 8'd1;end8'd144:begintx <= presult; /发送奇偶校验位presult <= datain0parit

47、ymode;idle <= 1'b1;cnt <= cnt + 8'd1;end8'd160:begintx <= 1'b1; /发送停止位 idle <= 1'b1;cnt <= cnt + 8'd1;end8'd176:begintx <= 1'b1; idle <= 1'b0; /一帧资料发送结束cnt <= cnt + 8'd1;enddefault:begincnt <= cnt + 8'd1;endendcaseendelsebegintx

48、<= 1'b1;cnt <= 8'd0;idle <= 1'b0;endendendmodule为了测试uart发送模块的正确性,需要编写一个测试模块来测试uart发送模块,verilog hdl语言代码如下:module testuart(clk, dataout, wrsig);input clk;output7:0 dataout;output wrsig;reg 7:0 dataout;reg wrsig;reg 7:0 cnt;always (posedge clk)beginif(cnt = 254)begindataout <= dataout + 8'd1; /每次数据加“1”wrsig <= 1'b1; /产生发送命令cnt <= 8'd0;endelsebeginwrsig <= 1'b0;cnt <= cnt + 8'd1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论