东华大学可编程ASIC技术作业——赵SG课件

2018-10-27 10:09

《可编程ASIC技术》课程作业2014

1.举例说明阻塞赋值和非阻塞赋值有什么本质的区别? 非阻塞赋值

module non_block(c,b,a,clk); output c,b; input clk,a; reg c,b;

always @(posedge clk) begin b<=a; c<=b; end endmodule

阻塞赋值

module block(c,b,a,clk); output c,b; input clk,a; reg c,b;

always @(posedge clk) begin b=a; c=b; end endmodule

非阻塞赋值仿真波形图

阻塞赋值仿真波形图

由此可见阻塞赋值是并行赋值,非阻塞赋值是随机的。

2.用持续赋值语句描述一个4选1数据选择器。 4选1的数据选择器程序:

module mux4_1(out,in1,in2,in3,in4,sel1,sel2); input in1,in2,in3,in4; output out; input sel1,sel2;

assign out=sel1?(sel2?in4:in3):(sel2?in2:in1); endmodule

3.设计一个功能和引脚与74138类似的译码器,并仿真。 译码器程序:

module encoder(out, in,en);

output[7:0] out;/*定义八位二进制码输出口*/ input[2:0] in;/*定义三位二进制码输入口*/ input[2:0] en;/*三个使能端*/ reg[7:0] out; always @(in or en) begin

if(en==3'b100) case(in)

3'd0: out=8'b11111110; 3'd1: out=8'b11111101; 3'd2: out=8'b11111011; 3'd3: out=8'b11110111; 3'd4: out=8'b11101111; 3'd5: out=8'b11011111;

3'd6: out=8'b10111111; 3'd7: out=8'b01111111; endcase

else out=8'b11111111; end endmodule

4.设计一个4位、可预置、可清零的移位寄存器,并仿真。 可预置、可清零的移位寄存器程序:

module shift_register(out,in,reset,set,clk); output[7:0] out;//定义四位输出端

input in,reset,set,clk;//输入信号、清零端、置数端、时钟信号 reg[7:0] out;

reg[7:0] md;//置数寄存器 always@(posedge clk) begin

begin md=8'b00001101;end//这里预置数为00001101,可以根据需要更改 if(reset)

begin out<=0;end else begin if(set)

begin out<=md;end//置数信号为1,置数 else

begin out<={out,in};end end end endmodule

5.设计一个上升沿触发的可预置、可清零16进制计数器,并仿真。如果要改为10进制计数器,应对该设计做哪些修改? module counter_16(Q,en,clock,clear,S); output [3:0]Q; input [3:0]S;

input en,clock,clear; reg[3:0]Q;

always @(posedge clock) begin

if (clear==0) begin

Q<=4'b0000;


东华大学可编程ASIC技术作业——赵SG课件.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:(重点)河南理工大学2019年成人专升本招生专业_ss

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: