《基于FPGA的现代数字系统设计》作业参考答案.ppt

上传人:牧羊曲112 文档编号:6077003 上传时间:2023-09-20 格式:PPT 页数:24 大小:332.49KB
返回 下载 相关 举报
《基于FPGA的现代数字系统设计》作业参考答案.ppt_第1页
第1页 / 共24页
《基于FPGA的现代数字系统设计》作业参考答案.ppt_第2页
第2页 / 共24页
《基于FPGA的现代数字系统设计》作业参考答案.ppt_第3页
第3页 / 共24页
《基于FPGA的现代数字系统设计》作业参考答案.ppt_第4页
第4页 / 共24页
《基于FPGA的现代数字系统设计》作业参考答案.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《《基于FPGA的现代数字系统设计》作业参考答案.ppt》由会员分享,可在线阅读,更多相关《《基于FPGA的现代数字系统设计》作业参考答案.ppt(24页珍藏版)》请在三一办公上搜索。

1、,3.3 设A=4b1010,B=4b0011,C=1b1,则下式运算结果是什么?(1)A 0101(2)A1 0101(3)A,B0,C 101011(4)A&B 0010(5)A B 1001(6)AB 0,3.5 有一个模块名为my_module,其输入/输出端口情况如题图3.1所示,试写出模块Verilog HDL的描述框架,即模块的定义、端口罗列和端口定义等。module my_modudle(AIN,BIN,CIN,CLK,ENABLE,RESET DATA_OUT)Input3:0 AIN;Input2:0 BIN;Input1:0 CIN;Input CLK,ENABLE,RE

2、SET;Output4:0 DATA_OUT;.,3.6 在下面的initial块中,根据每条语句的执行时刻,写出每个变量在仿真过程中和仿真结束时的值。initialbeginA=1b0;B=1b1;C=2b10;D=4b1100;#10 begin A=1b1;B=1b0;end#15 beginC=#5 2b01;end#10 beginD=#7 A,B,C;endend,3.6#0 A=1b0,B=1b 1,C=2b10,D=4b1100,#10 A=1b 1,B=1b 0,C=2b10,D=4b1100,#30 A=1b 1,B=1b 0,C=2b01,D=4b1100,#42 A=1

3、b 1,B=1b 0,C=2b01,D=4b1001.,3.7 定义一个深度为256,位宽为8比特的寄存器型数组,用for语句对该数组进行初始化,要求把所有的偶元素初始化为0,所有的奇元素初始化为1。3.7.reg 7:0 stage 255:0initialbegin for(i=0;i256;i=i+2)stagei=0;for(i=1;i256;i=i+2)statei=1;end,3.8 设计一个移位函数,输入一个位宽是32比特的数data,和一个左移、右移的控制信号shift_contr1:0,shift_contr1=1,data左移一位,shift_contr0=1,data右移

4、一位,函数返回移位后的数值。3.8 function 31:0 shift input31:0 data_in;input1:0 shift_contr;begin if(shift_contr1)shift=data_in 1;end endfunction,3.10 定义一个任务,该任务能计算出一个八位变量的偶校验位作为该任务的输出,计算结束后,经过三个时钟周期将该校验位赋给任务的输出。3.10 task parity(even_bit,odd_bit,input_bus);output even_bit,odd_bit;input7:0 input_bus;reg even_bit,od

5、d_bit,a;beginodd_bit=input_bus;/产生奇校验位 a=odd_bit;end;/产生偶校验位(posedgeclk)(posedgeclk)(posedgeclk)even_bit=a;endendtask,3.12 module mux4(A,B,C,D,sel,data_sel);parameter width=8;inputwidth-1:0 A,B,C,D;input1:0 sel;outputwidth-1:0 data_sel;reg width-1:0 data_sel;always(A or B or C or D or sel)begin case

6、(sel)2b00:data_sel=A;2b01:data_sel=B;2b10:data_sel=C;2b11:data_sel=D;default:$display(signal is invalid);endcase endendmodule,3.12 module mux4(clk,rst,A,B,C,D,sel,data_sel);parameter width=8;inputwidth-1:0 A,B,C,D;input1:0 sel;input clk,rst;outputwidth-1:0 data_sel;wire width-1:0 data_sel;assign dat

7、a_sel=sel1?(sel0?D:C):(sel0?B:A);endmodule,设计一个序列检测器,用于检测串行输入的二进制序列,每当连续输入三个或三个以上的1时,序列检测器的输出为1,其它情况下输出为0。(1)画出状态转移图。(2)写出Verilog HDL程序(要求在程序中使用2个always 语句),状态图:s0:初始状态,电路还未收到一个有效1 s1:收到一个1后的状态S2:连续收到两个1后的状态 s3:连续收到三个1个后的状态,modulefsm(clk,reset,ina,out);inputclk,ina;outputout;regout;parameters0=2b00,

8、s1=2b01,s2=2b10,s3=2b11;reg0:1 state,next_state;always(posedgeclk)begin if(!reset)state=s0;else state=next_state;endalways(stateorina)begin,case(state)s0:beginnext_state=(ina)?s1:s0;out=0;ends1:beginnext_state=(ina)?s2:s0;out=0;ends2:beginnext_state=(ina)?s3:s0;out=0;ends3:beginnext_state=(ina)?s3:s

9、0;out=1;endendcaseendendmodule,作业:下图是一个A/D采集系统,要求设计其中的FPGA采集控制模块,该模块由三个部分构成:控制器(Control)、地址计数器(addrcnt)、内嵌双口RAM(adram)。控制器(control)是一个有限状态机,完成对AD574的控制,和adram的写入操作。adram是一个双口RAM IP核,在wren为1时允许写入数据。,A/D采集系统,AD574逻辑控制真值表(X表示任意),AD574工作时序,下面表列出了AD574的控制方式(X表示任意信号)和控制时序图(STATUS为高电平,FPGA等待A/D转换,STATUS为低电

10、平,A/D转换完成,数据输出有效):,回答问题:1)试画出控制器Control模块的状态机的状态图。2)地址计数器每当ClkInc时钟上升沿到达,输出地址加1,请对地址计数器模块(addrcnt)进行Verilog HDL描述。3)根据问题1)的状态图,试对控制器Control模块进行Verilog HDL描述。4)已知adram的端口描述如下,试用例化语句,对整个FPGA采集控制模块进行顶层模块的Verilog HDL描述(顶层名设为ADC574)。,1)试画出控制器Control模块的状态机的状态图。,2)地址计数器每当ClkInc时钟上升沿到达,输出地址加1,请对该模块进行verilog

11、描述。module cnt64(ClkInc,Cntclr,Wraddr);input ClkInc,Cntclr;output5:0 Wraddr;reg5:0 Wraddr;always(posedge ClkInc or posedge Cntclr)beginif(Cntclr)Wraddr=6d0;else Wraddr=Wraddr+1;endendmodule,3)根据状态图,试对control进行Verilog描述.module control(CLK,STATUS,ADData,CS,CE,A0,RC,K12_8,ClkInc,rddata);input CLK,STATUS

12、;/时钟信号和AD转换状态信号输入 input7:0 ADData;/转换数据输入 output CS,CE,A0,RC,K12_8;/AD574控制信号 output ClkInc;/地址计数器时钟信号 output7:0 rddata;/转换数据输出 parameter s0=0,s1=1,s2=2,s3=3,s4=4;reg2:0 st;reg lock;reg CS,CE,RC;,assign K12_8=1b0;assign A0=1b1;assign ClkInc=(lock=1b1)?1:0;assign rddata=(lock=1b1)?ADData:rddata;alway

13、s(posedge CLK)begin case(st)s0:begin st=s1;RC=1b1;CE=1b0;CS=1b1;lock=1b0;end s1:begin st=s2;RC=1b0;CE=1b1;CS=1b0;lock=1b0;end,s2:if(!STATUS)st=s3;else begin st=s2;RC=1b1;CE=1b1;CS=1b0;lock=1b0;ends3:begin st=s4;RC=1b1;CE=1b1;CS=1b0;lock=1b1;ends4:begin st=s0;RC=1b1;CE=1b1;CS=1b0;lock=1b0;enddefault:

14、st=s0;endcaseendendmodule,5)已知adram的端口描述如下,试用例化语句,对整个FPGA采集控制模块进行Verilog顶层描述。顶层名为ADC574.module ADC574(CLK,STATUS,ADDATA,Cntclr,Rdaddr,CS,CE,A0,RC,K12_8,rddata);input CLK,STATUS;/时钟信号和AD转换状态信号输入 input7:0 ADDATA;/转换数据输入 input Cntclr;/计数器清零信号 input5:0 Rdaddr;/adram读数地址output CS,CE,A0,RC,K12_8;/AD574控制信

15、号output7:0 rddata;/adram读数据输出wire ClkInc;wire5:0 Wraddr;wire7:0 r_data;wire wren;,5)已知adram的端口描述如下,试用例化语句,对整个FPGA采集控制模块进行Verilog顶层描述。顶层名为ADC574.module ADC574(CLK,STATUS,ADDATA,Cntclr,Rdaddr,CS,CE,A0,RC,K12_8,rddata);input CLK,STATUS;/时钟信号和AD转换状态信号输入 input7:0 ADDATA;/转换数据输入 input Cntclr;/计数器清零信号 inpu

16、t5:0 Rdaddr;/adram读数地址output CS,CE,A0,RC,K12_8;/AD574控制信号output7:0 rddata;/adram读数据输出wire ClkInc;wire5:0 Wraddr;wire7:0 r_data;wire wren;,assign wren=1b1;control u1(.CLK(CLK),.STATUS(STATUS),.ADDATA(ADDATA),.CS(CS),.CE(CE),.A0(A0),.RC(RC),.K12_8(K12_8),.ClkInc(ClkInc),.rddata(r_data);cnt64 u2(.ClkInc(ClkInc),.Cntclr(Cntclr),.Wraddr(Wraddr);adram u3(.data(r_data),.wraddress(Wraddr),.rdaddress(Rdaddr),.wren(wren),.q(rddata);endmodule,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号