《基于FPGA的现代数字系统设计》作业参考答案.ppt
- 文档编号:4829973
- 上传时间:2023-05-07
- 格式:PPT
- 页数:24
- 大小:325KB
《基于FPGA的现代数字系统设计》作业参考答案.ppt
《《基于FPGA的现代数字系统设计》作业参考答案.ppt》由会员分享,可在线阅读,更多相关《《基于FPGA的现代数字系统设计》作业参考答案.ppt(24页珍藏版)》请在冰点文库上搜索。
,3.3设A=4b1010,B=4b0011,C=1b1,则下式运算结果是什么?
(1)A0101
(2)A10101(3)A,B0,C101011(4)A&B0010(5)AB1001(6)AB0,3.5有一个模块名为my_module,其输入/输出端口情况如题图3.1所示,试写出模块VerilogHDL的描述框架,即模块的定义、端口罗列和端口定义等。
modulemy_modudle(AIN,BIN,CIN,CLK,ENABLE,RESETDATA_OUT)Input3:
0AIN;Input2:
0BIN;Input1:
0CIN;InputCLK,ENABLE,RESET;Output4:
0DATA_OUT;.,3.6在下面的initial块中,根据每条语句的执行时刻,写出每个变量在仿真过程中和仿真结束时的值。
initialbeginA=1b0;B=1b1;C=2b10;D=4b1100;#10beginA=1b1;B=1b0;end#15beginC=#52b01;end#10beginD=#7A,B,C;endend,3.6#0A=1b0,B=1b1,C=2b10,D=4b1100,#10A=1b1,B=1b0,C=2b10,D=4b1100,#30A=1b1,B=1b0,C=2b01,D=4b1100,#42A=1b1,B=1b0,C=2b01,D=4b1001.,3.7定义一个深度为256,位宽为8比特的寄存器型数组,用for语句对该数组进行初始化,要求把所有的偶元素初始化为0,所有的奇元素初始化为1。
3.7.reg7:
0stage255:
0initialbeginfor(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右移一位,函数返回移位后的数值。
3.8function31:
0shiftinput31:
0data_in;input1:
0shift_contr;beginif(shift_contr1)shift=data_in1;endendfunction,3.10定义一个任务,该任务能计算出一个八位变量的偶校验位作为该任务的输出,计算结束后,经过三个时钟周期将该校验位赋给任务的输出。
3.10taskparity(even_bit,odd_bit,input_bus);outputeven_bit,odd_bit;input7:
0input_bus;regeven_bit,odd_bit,a;beginodd_bit=input_bus;/产生奇校验位a=odd_bit;end;/产生偶校验位(posedgeclk)(posedgeclk)(posedgeclk)even_bit=a;endendtask,3.12modulemux4(A,B,C,D,sel,data_sel);parameterwidth=8;inputwidth-1:
0A,B,C,D;input1:
0sel;outputwidth-1:
0data_sel;regwidth-1:
0data_sel;always(AorBorCorDorsel)begincase(sel)2b00:
data_sel=A;2b01:
data_sel=B;2b10:
data_sel=C;2b11:
data_sel=D;default:
$display(signalisinvalid);endcaseendendmodule,3.12modulemux4(clk,rst,A,B,C,D,sel,data_sel);parameterwidth=8;inputwidth-1:
0A,B,C,D;input1:
0sel;inputclk,rst;outputwidth-1:
0data_sel;wirewidth-1:
0data_sel;assigndata_sel=sel1?
(sel0?
D:
C):
(sel0?
B:
A);endmodule,设计一个序列检测器,用于检测串行输入的二进制序列,每当连续输入三个或三个以上的1时,序列检测器的输出为1,其它情况下输出为0。
(1)画出状态转移图。
(2)写出VerilogHDL程序(要求在程序中使用2个always语句),状态图:
s0:
初始状态,电路还未收到一个有效1s1:
收到一个1后的状态S2:
连续收到两个1后的状态s3:
连续收到三个1个后的状态,modulefsm(clk,reset,ina,out);inputclk,ina;outputout;regout;parameters0=2b00,s1=2b01,s2=2b10,s3=2b11;reg0:
1state,next_state;always(posedgeclk)beginif(!
reset)state=s0;elsestate=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:
s0;out=1;endendcaseendendmodule,作业:
下图是一个A/D采集系统,要求设计其中的FPGA采集控制模块,该模块由三个部分构成:
控制器(Control)、地址计数器(addrcnt)、内嵌双口RAM(adram)。
控制器(control)是一个有限状态机,完成对AD574的控制,和adram的写入操作。
adram是一个双口RAMIP核,在wren为1时允许写入数据。
A/D采集系统,AD574逻辑控制真值表(X表示任意),AD574工作时序,下面表列出了AD574的控制方式(X表示任意信号)和控制时序图(STATUS为高电平,FPGA等待A/D转换,STATUS为低电平,A/D转换完成,数据输出有效):
回答问题:
1)试画出控制器Control模块的状态机的状态图。
2)地址计数器每当ClkInc时钟上升沿到达,输出地址加1,请对地址计数器模块(addrcnt)进行VerilogHDL描述。
3)根据问题1)的状态图,试对控制器Control模块进行VerilogHDL描述。
4)已知adram的端口描述如下,试用例化语句,对整个FPGA采集控制模块进行顶层模块的VerilogHDL描述(顶层名设为ADC574)。
1)试画出控制器Control模块的状态机的状态图。
2)地址计数器每当ClkInc时钟上升沿到达,输出地址加1,请对该模块进行verilog描述。
modulecnt64(ClkInc,Cntclr,Wraddr);inputClkInc,Cntclr;output5:
0Wraddr;reg5:
0Wraddr;always(posedgeClkIncorposedgeCntclr)beginif(Cntclr)Wraddr=6d0;elseWraddr=Wraddr+1;endendmodule,3)根据状态图,试对control进行Verilog描述.modulecontrol(CLK,STATUS,ADData,CS,CE,A0,RC,K12_8,ClkInc,rddata);inputCLK,STATUS;/时钟信号和AD转换状态信号输入input7:
0ADData;/转换数据输入outputCS,CE,A0,RC,K12_8;/AD574控制信号outputClkInc;/地址计数器时钟信号output7:
0rddata;/转换数据输出parameters0=0,s1=1,s2=2,s3=3,s4=4;reg2:
0st;reglock;regCS,CE,RC;,assignK12_8=1b0;assignA0=1b1;assignClkInc=(lock=1b1)?
1:
0;assignrddata=(lock=1b1)?
ADData:
rddata;always(posedgeCLK)begincase(st)s0:
beginst=s1;RC=1b1;CE=1b0;CS=1b1;lock=1b0;ends1:
beginst=s2;RC=1b0;CE=1b1;CS=1b0;lock=1b0;end,s2:
if(!
STATUS)st=s3;elsebeginst=s2;RC=1b1;CE=1b1;CS=1b0;lock=1b0;ends3:
beginst=s4;RC=1b1;CE=1b1;CS=1b0;lock=1b1;ends4:
beginst=s0;RC=1b1;CE=1b1;CS=1b0;lock=1b0;enddefault:
st=s0;endcaseendendmodule,5)已知adram的端口描述如下,试用例化语句,对整个FPGA采集控制模块进行Verilog顶层描述。
顶层名为ADC574.moduleADC574(CLK,STATUS,ADDATA,Cntclr,Rdaddr,CS,CE,A0,RC,K12_8,rddata);inputCLK,STATUS;/时钟信号和AD转换状态信号输入input7:
0ADDATA;/转换数据输入inputCntclr;/计数器清零信号input5:
0Rdaddr;/adram读数地址outputCS,CE,A0,RC,K12_8;/AD574控制信号output7:
0rddata;/adram读数据输出wireClkInc;wire5:
0Wraddr;wire7:
0r_data;wirewren;,5)已知adram的端口描述如下,试用例化语句,对整个FPGA采集控制模块进行Verilog顶层描述。
顶层名为ADC574.moduleADC574(CLK,STATUS,ADDATA,Cntclr,Rdaddr,CS,CE,A0,RC,K12_8,rddata);inputCLK,STATUS;/时钟信号和AD转换状态信号输入input7:
0ADDATA;/转换数据输入inputCntclr;/计数器清零信号input5:
0Rdaddr;/adram读数地址outputCS,CE,A0,RC,K12_8;/AD574控制信号output7:
0rddata;/adram读数据输出wireClkInc;wire5:
0Wraddr;wire7:
0r_data;wirewren;,assignwren=1b1;controlu1(.CLK(CLK),.STATUS(STATUS),.ADDATA(ADDATA),.CS(CS),.CE(CE),.A0(A0),.RC(RC),.K12_8(K12_8),.ClkInc(ClkInc),.rddata(r_data);cnt64u2(.ClkInc(ClkInc),.Cntclr(Cntclr),.Wraddr(Wraddr);adramu3(.data(r_data),.wraddress(Wraddr),.rdaddress(Rdaddr),.wren(wren),.q(rddata);endmodule,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于FPGA的现代数字系统设计 基于 FPGA 现代 数字 系统 设计 作业 参考答案