实验任务1 定点加法实验
来源:互联网 发布:ubuntu jdk 64位下载 编辑:程序博客网 时间:2024/05/29 07:45
实验要求
使用Verilog语言,设计2个计数器
计数器1字长3比特,无符号数制,从0计数到7。
计数器2字长4比特,二补码数制,从-7 计数到7。(注意危险的1000,这是-8)
自行设计符号扩展规则,把两个计数器的输出信号进行字长匹配,然后相加
自行设定相加之后的字长。
验证两个计数值相加之后的正确性。
可以使用modelsim或是quartus的波形仿真或是signalTAP
- 计数器1字长3比特,无符号数制,从0计数到7。
module cnt_0to7(clk, rst_n, cnt_1); input clk; input rst_n; output reg [2:0] cnt_1; parameter T= 7;always @ (posedge clk) begin if(!rst_n) cnt_1 <= 0; else if(cnt_1 == T) cnt_1 <= 0; else cnt_1 <= cnt_1 + 1'b1;endendmodule
2.计数器2字长4比特,二补码数制,从-7 计数到7。
module cnt__7to7(clk, rst_n, cnt_2); input clk, rst_n;output [3:0] cnt_2;reg signed [3:0] cnt_2; always @ (posedge clk) begin if(!rst_n) cnt_2 <= 4'sb1001; else if(cnt_2==4'b0111) cnt_2 <= 4'b1001; else cnt_2 <= cnt_2 + 4'sb0001;endendmodule
3.符号扩展为4位,把两个计数器的输出信号进行字长匹配,然后相加
module and_cnt(clk, rst_n, sum); input clk, rst_n; output sum; reg signed [4-1:0] sum; reg signed [4-1:0] cnt_1_3to4; wire signed [3-1:0] cnt_1; wire signed [4-1:0] cnt_2; cnt_0to7 a(.clk(clk), .rst_n(rst_n), .cnt_1(cnt_1)); always @ (cnt_1) begin cnt_1_3to4 = {1'sb0,cnt_1}; end cnt__7to7 b(.clk(clk), .rst_n(rst_n), .cnt_2(cnt_2)); always @ (cnt_1_3to4 or cnt_2) begin sum = cnt_1_3to4 + cnt_2; endendmodule
从modelsim截图中可以看到有溢出产生
4.符号扩展为5位,把两个计数器的输出信号进行字长匹配,然后相加
module and_cnt_2(clk, rst_n, sum); input clk, rst_n; output reg signed [5-1:0] sum; reg signed [4:0] cnt_1_3to5; reg signed [4:0] cnt_2_4to5; wire signed [2:0] cnt_1; wire signed [3:0] cnt_2; cnt_0to7 a(.clk(clk), .rst_n(rst_n), .cnt_1(cnt_1)); always @ (cnt_1) begin cnt_1_3to5 = {2'b00,cnt_1}; end cnt__7to7 b(.clk(clk), .rst_n(rst_n), .cnt_2(cnt_2)); always @ (cnt_2) begin if(cnt_2[3] == 0) cnt_2_4to5 = {1'b0,cnt_2}; else cnt_2_4to5 = {1'b1,cnt_2}; end always @ (cnt_1_3to5 or cnt_2_4to5) begin sum = cnt_1_3to5 + cnt_2_4to5; endendmodule
截图中可以看到该段及未显示段均正确
总结(定点数相加字长问题)
1.首先将两个定点数扩展为相同bit数,建议与和的bit数相同
2.简单计算相加和的最大值,从而确定和的bit数。&注意此时要考虑到符号位是否存在,若符号位存在,应预留出符号位,即扩展为实际长度+1
阅读全文
0 0
- 实验任务1 定点加法实验
- 探索定点数实验
- 实验任务1 打招呼
- JAVA--第三周实验--任务1--实现分数的加法运算(编程思想)
- 设计电路加法实验
- 电路加法实验
- 电路加法实验
- 第 1次实验任务
- 第 1次实验任务
- 第 1次实验任务
- 第1次实验任务
- 第1次实验任务
- 实验二任务1打招呼
- 实验二 任务1 打招呼
- 第五周实验报告任务1-1
- 第六章的实验任务(1)
- 第十一周实验报告任务1
- 第二周实验报告(任务1)
- 《Effective C++》第二章:构造/析构/赋值运算
- 微服务(Microservices)【翻译】
- 【OPNET学习系列文章之2】两个固定节点通信
- CF Educational Round 23 F.MEX Queries
- 图的概念与遍历
- 实验任务1 定点加法实验
- foreach循环实现一行多条数据并设置样式
- PHP视频转码截图
- 游戏编程入门(4):绘制图形图像
- 数据结构——哈夫曼树与编码
- WPF中让Combobox具有查找功能
- popupWindow定时消失和指定位置弹出
- 线段树单点更新 poj2828 buy tickets
- dubbo的几种通信协议