《基于fpga的现代数字系统设计》作业参考答案课件

上传人:F****n 文档编号:88131223 上传时间:2019-04-19 格式:PPT 页数:24 大小:188.50KB
返回 下载 相关 举报
《基于fpga的现代数字系统设计》作业参考答案课件_第1页
第1页 / 共24页
《基于fpga的现代数字系统设计》作业参考答案课件_第2页
第2页 / 共24页
《基于fpga的现代数字系统设计》作业参考答案课件_第3页
第3页 / 共24页
《基于fpga的现代数字系统设计》作业参考答案课件_第4页
第4页 / 共24页
《基于fpga的现代数字系统设计》作业参考答案课件_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《《基于fpga的现代数字系统设计》作业参考答案课件》由会员分享,可在线阅读,更多相关《《基于fpga的现代数字系统设计》作业参考答案课件(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

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

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

4、信号shift_contr1:0,shift_contr1=1,data左移一位,shift_contr0=1,data右移一位,函数返回移位后的数值。 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

5、,input_bus); output even_bit,odd_bit; input7:0 input_bus; reg even_bit, odd_bit,a; begin odd_bit = input_bus; /产生奇校验位 a = odd_bit;end; /产生偶校验位 (posedge clk) (posedge clk) (posedge clk) even_bit=a; end endtask,3.12 module mux4(A,B, C,D,sel,data_sel); parameter width = 8; inputwidth-1:0 A,B,C,D; input

6、1: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(sel) 2b00 : data_sel = A; 2b01 : data_sel = B; 2b10 : data_sel = C; 2b11 : data_sel = D; default : $display(“signal is invalid“); endcase end endmodule,3.12 module mux4(clk,rst,A,B, C,D,sel,data_se

7、l); 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 data_sel=sel1? (sel0 ? D:C) : (sel0 ? B:A); endmodule,设计一个序列检测器,用于检测串行输入的二进制序列,每当连续输入三个或三个以上的1时,序列检测器的输出为1,其它情况下输出为0。 (1)画出状态转移图。 (2)写出Verilog HDL程序(要求在程序中使用2个alwa

8、ys 语句),状态图: s0:初始状态,电路还未收到一个有效1 s1:收到一个1后的状态 S2:连续收到两个1后的状态 s3:连续收到三个1个后的状态,module fsm(clk,reset, ina,out); input clk,ina; output out; reg out; parameter s0 = 2b00,s1 =2b01, s2 =2b10,s3=2b11; reg0:1 state,next_state; always (posedge clk) begin if (!reset) state = s0 ; else state=next_state; end alwa

9、ys (state or ina) begin,case(state ) s0:begin next_state=(ina)?s1:s0;out=0; end s1:begin next_state=(ina)?s2:s0;out=0; end s2:begin next_state=(ina)?s3:s0;out=0; end s3:begin next_state=(ina)?s3:s0;out=1; end endcase end endmodule,作业: 下图是一个A/D采集系统,要求设计其中的FPGA采集控制模块,该模块由三个部分构成:控制器(Control)、地址计数器(addr

10、cnt)、内嵌双口RAM(adram)。控制器(control)是一个有限状态机,完成对AD574的控制,和adram的写入操作。adram是一个双口RAM IP核,在wren为1时允许写入数据。,A/D采集系统,AD574逻辑控制真值表(X表示任意),AD574工作时序,下面表列出了AD574的控制方式(X表示任意信号)和控制时序图(STATUS为高电平,FPGA等待A/D转换,STATUS为低电平,A/D转换完成,数据输出有效):,回答问题: 1)试画出控制器Control模块的状态机的状态图。 2)地址计数器每当ClkInc时钟上升沿到达,输出地址加1,请对地址计数器模块(addrcnt

11、)进行Verilog HDL描述。 3)根据问题1)的状态图,试对控制器Control模块进行Verilog HDL描述。 4) 已知adram的端口描述如下,试用例化语句,对整个FPGA采集控制模块进行顶层模块的Verilog HDL描述(顶层名设为ADC574)。,1)试画出控制器Control模块的状态机的状态图。,2) 地址计数器每当ClkInc时钟上升沿到达,输出地址加1,请对该模块进行verilog描述。 module cnt64(ClkInc, Cntclr, Wraddr); input ClkInc, Cntclr; output5:0 Wraddr; reg5:0 Wrad

12、dr; always(posedge ClkInc or posedge Cntclr) begin if(Cntclr) Wraddr=6d0; else Wraddr=Wraddr+1; end endmodule,3) 根据状态图,试对control进行Verilog描述. module control(CLK, STATUS, ADData, CS, CE, A0, RC, K12_8, ClkInc, rddata); input CLK, STATUS; /时钟信号和AD转换状态信号输入 input7:0 ADData; /转换数据输入 output CS, CE, A0, RC,

13、 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; always(posedge CLK) begin case(st) s0: begin st = s1;

14、 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;end s3: begin st = s4;RC =1b1;CE =1b1;CS =1b0;lock =1b1;end s4: begin st = s0;RC =1b1;CE =1b1;CS =1b0;lock =1b0;end def

15、ault:st=s0; endcase end endmodule,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控制信号 output7:0 rddata; / adram读数据输出 wire ClkInc; wire5:0 Wraddr; wire7:0 r_data; wire wren;,5) 已知adram的端口描述如下,试用例化语句,对整个FPGA采集控制模块进行Verilog顶层描述。顶层名为ADC574. module ADC574(CLK, STAT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号