8位全减器设计Verilog代码Quartus仿真

名称:1位全减器设计Verilog代码Quartus仿真(文末获取)

软件:Quartus

语言:Verilog

代码功能:

给出1位全减器的 Verilog HDL描述。要求

l)首先设计1位半减器,然后用例化语句将它们连接起来,图中 h_ suber是半减器,diff是输出差,Sout是借位输出, sub_in是借位输入

2)根据图设计1位全减器

3)以1位全减器为基本硬件,构成串行借位的8位全减器,要求用例化语句来完成此项设计

QQ图片20240117110433.png

(1)将RTL代码复制黏贴到下面

(2)将 testbench仿真测试代码复制黏贴在下方

(3)截图波形,波形能够清晰反映所有变量的变化情况

(4)截图RTL视图

module f_suber_8bit(

input [7:0]x,

input [7:0]y,

input sub_in,

output [7:0]diff,

output sub_out

);

wire sub_out1;

wire sub_out2;

wire sub_out3;

wire sub_out4;

wire sub_out5;

wire sub_out6;

wire sub_out7;

f_suber i0_f_suber(

. x(x[0]),

. y(y[0]),

. sub_in(sub_in),

. diff(diff[0]),

. sub_out(sub_out1)

);

f_suber i1_f_suber(

. x(x[1]),

. y(y[1]),

. sub_in(sub_out1),

. diff(diff[1]),

. sub_out(sub_out2)

);

f_suber i2_f_suber(

. x(x[2]),

. y(y[2]),

. sub_in(sub_out2),

. diff(diff[2]),

. sub_out(sub_out3)

);

f_suber i3_f_suber(

. x(x[3]),

. y(y[3]),

. sub_in(sub_out3),

. diff(diff[3]),

. sub_out(sub_out4)

);

f_suber i4_f_suber(

. x(x[4]),

. y(y[4]),

. sub_in(sub_out4),

. diff(diff[4]),

. sub_out(sub_out5)

);

f_suber i5_f_suber(

. x(x[5]),

. y(y[5]),

. sub_in(sub_out5),

. diff(diff[5]),

. sub_out(sub_out6)

);

f_suber i6_f_suber(

. x(x[6]),

. y(y[6]),

. sub_in(sub_out6),

. diff(diff[6]),

. sub_out(sub_out7)

);

f_suber i7_f_suber(

. x(x[7]),

. y(y[7]),

. sub_in(sub_out7),

. diff(diff[7]),

. sub_out(sub_out)

);

endmodule

Testbench代码

module testbench();

reg [7:0]x;

reg [7:0]y;

reg sub_in;

wire [7:0]diff;

wire sub_out;

f_suber_8bit i_f_suber_8bit(

.x(x),

.y(y),

.sub_in(sub_in),

.diff(diff),

.sub_out(sub_out)

);

initial begin

x=0;

y=0;

sub_in=0;

#10;

x=7;

y=5;

sub_in=1;

#10;

x=89;

y=28;

sub_in=0;

#10;

x=45;

y=25;

sub_in=1;

#10;

x=44;

y=45;

sub_in=0;

#10;

x=78;

y=42;

sub_in=0;

#10;

end

endmodule

仿真图

RTL图

部分代码展示:

module f_suber(
input x,
input y,
input sub_in,
output diff,
output sub_out
);
wire diff1;
wire s_out1;
wire s_out2;
h_suber i1_h_suber(
. x(x),
. y(y),
. diff(diff1),
. s_out(s_out1)
);
h_suber i2_h_suber(
. x(diff1),
. y(sub_in),
. diff(diff),
. s_out(s_out2)
);
assign sub_out= s_out1 | s_out2;
endmodule

源代码

 扫描文章末尾的公众号二维码

  • 19
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Quartus 17.1版开始的重大更新内容: 1. 增加了Stratix 10系列的器件库(Intel 真14nm工艺生产,内核速度直接上1GHz,号称全世界最快的FPGA) 2. 集成了HLS编译器(免费),用于C/C++开发FPGA,主要用于信号处理和/或科学计算类设计应用,和一样用C/C++开发FPGA的OpenCL(免费)有一些区别。 3. 把一些Quartus内部集成的功能名字改了,让用户特别是初学者更容易理解这些功能的用处: 旧的名字 新的名字 Blueprint Interface Planner Qsys Platform Designer EyeQ Eye Viewer JNEye Advanced Link Analyzer LogicLock Logic Lock Region TimeQuest Timing Analyzer 破解器增加了抗single-event upset (SEU,可以翻译成单粒子翻转)的license内容,这个对某国禁运的功能支持2009年以后的大部分新器件,对于航空、航天、兵器、核工业、电力、高铁、医疗仪器等等要求高可靠性的产品非常有价值。当然,这个license一样可以用在老版本的Quartus上,但是必需是用破解器破解过的Quartus,正版license是没有这个功能的,原因你懂得!SEU使用方法请参考器件的英文版数据手册,或者找骏龙科技要各个新系列FPGA的中文版的手册。 和这个SEU功能类似的还有加密功能的license,可以按照美国国防部标准的256位AES加密算法加密大部分新FPGA,至今还无人能解密,需要者自己联系骏龙科技。本人暂时不加入,因为这些太敏感的禁运东西加入太多了怕出问题。
以下是一个基于FPGA的数字计频器的Verilog代码,同时包含了Quartus II的仿真测试代码: ```verilog module freq_counter ( input clk, // 输入时钟 input reset, // 复位信号 input start, // 开始计数信号 output reg [31:0] freq_count // 输出计数器计数值 ); reg [31:0] count; // 内部计数器 always @(posedge clk) begin if (reset) begin count <= 0; freq_count <= 0; end else if (start) begin count <= count + 1; freq_count <= count; end end endmodule module freq_counter_test(); reg clk; reg reset; reg start; wire [31:0] freq_count; freq_counter counter( .clk(clk), .reset(reset), .start(start), .freq_count(freq_count) ); initial begin clk = 0; reset = 1; start = 0; #10 reset = 0; #100 start = 1; #1000 start = 0; #100000 $finish; end always #5 clk = ~clk; endmodule ``` 在这个例子中,我们定义了一个频率计数器模块`freq_counter`,它包含了一个时钟输入`clk`、一个复位信号`reset`、一个开始计数信号`start`和一个计数器计数值输出`freq_count`。在每个时钟上升沿时,如果复位信号为1,则计数器复位为0;如果开始计数信号为1,则计数器加1,并将计数器计数值赋值给输出端口。 我们还定义了一个测试模块`freq_counter_test`,它包含了一个时钟输入`clk`、一个复位信号`reset`、一个开始计数信号`start`和一个计数器计数值输出`freq_count`。在测试模块中,我们通过给时钟、复位和开始计数信号赋值的方式来测试计数器模块的功能。具体来说,我们在仿真开始时将复位信号置为1,经过一段时间后将其置为0,然后在一定时间后将开始计数信号置为1,经过一定时间后再将其置为0。最后,在一定时间后仿真结束。 在Quartus II中,我们可以通过仿真波形来验证计数器模块是否能够正确地计数。具体来说,我们可以打开波形编辑器,将测试模块的输入和输出端口添加到波形中,然后运行仿真。在仿真结果中,我们可以看到计数器模块的计数值是否与预期相符。如果相符,则说明计数器模块的功能是正确的。 希望这个Verilog代码Quartus II仿真测试代码对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值