失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > DUT——同相运算放大器

DUT——同相运算放大器

时间:2024-04-04 04:02:04

相关推荐

DUT——同相运算放大器

一.DUT概述

系统信号

clk_i 系统时钟

rstn_i 复位信号

控制及输入信号

wr_en_i 写入使能信号

set_scaler_i 设置放大倍数使能信号

wr_data_i输入数据

输出信号

rd_val_o输出数据有效标志

rd_data_o输出数据

scaler_o当前放大倍数

额外信号

no_r 输入序号(8位)

res_r 基本数字(放大后的数字)

flag 标志位

二.DUT的工作状态

1.idle

wr_en_i信号为低,DUT处于闲置周期;

2.设定放大倍数

wr_en_i信号高,同时set_scaler_i信号也为高,DUT处于设定放大倍数状态

此时,scaler_o = wr_data_i

if(wr_en_i && set_scaler_i) beginscaler <= wr_data_i;no_r <= 1'b0;res_r <= 1'b0;flag <= 1'b0;end

3.放大输入

wr_en_i信号高,set_scaler_i信号为低时,DTU处于放大状态

此时,rd_data_o = {no_r,res_r}

no_r = wr_data_i [15:8];

res_r = wr_data_i [7:0] * scaler;

写入数据高八位为序号位,低八位为数据位

if(wr_en_i && !set_scaler_i) begin scaler <= scaler;no_r <= wr_data_i[15:8];res_r <= wr_data_i[ 7:0] * scaler;flag <= 1'b1;end

三.bug设置

为了验证DUT的完整性,额外引入两个设计bug。

1.设定放大倍数为5的时候,DUT会自动更改为55;

2.Base_number为123的时候, 无论scaler是多少,都是放大100倍输出

if(wr_en_i && set_scaler_i && wr_data_i == 16'd5) beginscaler <= 16'd55; no_r <= 1'b0;res_r <= 1'b0;flag <= 1'b0;end// bug end 1else if(wr_en_i && set_scaler_i) beginscaler <= wr_data_i;no_r <= 1'b0;res_r <= 1'b0;flag <= 1'b0;end//bug start 2else if(wr_en_i && !set_scaler_i && wr_data_i[ 7:0]== 8'd123) begin scaler <= scaler;no_r <= wr_data_i[15:8];res_r <= wr_data_i[ 7:0] * 100;flag <= 1'b1;end// bug end 2

如果觉得《DUT——同相运算放大器》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。