verilog仿真 设计8421-2421码译码器,将8421bcd码转为2421bcd码(有偿)

verilog仿真 设计8421-2421码译码器,将8421bcd码转为2421bcd码(有偿)


module bcd8421to2421
(
    input    [3:0]    in,
    output    [3:0]    out
);
reg    [3:0]    out_r;

assign    out = out_r;

always@(*)
begin
    case(in)
    4'b0000:    out_r <= 4'b0000;    //0
    4'b0001:    out_r <= 4'b0001;    //1
    4'b0010:    out_r <= 4'b0010;    //2
    4'b0011:    out_r <= 4'b0011;    //3
    4'b0100:    out_r <= 4'b0100;    //4
    4'b0101:    out_r <= 4'b1011;    //5
    4'b0110:    out_r <= 4'b1100;    //6
    4'b0111:    out_r <= 4'b1101;    //7
    4'b1000:    out_r <= 4'b1110;    //8
    4'b1001:    out_r <= 4'b1111;    //9
    default        out_r <= 4'b0000;
    endcase
end
endmodule

`timescale 1us / 1us
module bcd8421to2421_sim();
reg    [3:0]    in;
wire[3:0]    out;
initial begin
        in    = 4'b0000;    //0
#100    in    = 4'b0001;    //1
#100    in    = 4'b0010;    //2
#100    in    = 4'b0011;    //3
#100    in    = 4'b0100;    //4
#100    in    = 4'b0101;    //5
#100    in    = 4'b0110;    //6
#100    in    = 4'b0111;    //7
#100    in    = 4'b1000;    //8
#100    in    = 4'b1001;    //9
#100    $stop;

end

bcd8421to2421    u1
(
    .in        (in),
    .out    (out)
);
endmodule


img

在Verilog中设计8421-2421码译码器,你可以使用模块和表达式来实现。

下面是一个示例代码:

module bcd_8421_2421_decoder(
    input [3:0] bcd_8421, // 8421码输入
    output [3:0] bcd_2421 // 2421码输出
);
    // 定义8421码到2421码的转换表
    reg [3:0] bcd_8421_to_2421_table = 'h0; 'h9; 'h8; 'h7; 'h6; 'h5; 'h4; 'h3; 'h2; 'h1;

    // 将8421码转换为2421码
    assign bcd_2421 = bcd_8421_to_2421_table[bcd_8421];
endmodule

在这个模块中,我们定义了一个4位的8421码输入bcd_8421和一个4位的2421码输出bcd_2421。

然后我们定义了一个由10个4位数组成的转换表bcd

然后我们使用assign语句将bcd_8421的值映射到bcd_8421_to_2421_table表中的对应位置,并将结果赋值给bcd_2421输出。

这样,当bcd_8421的值发生变化时,bcd_2421的值也会自动更新。

例如,当bcd_8421的值为'h2时,bcd_2421的值为'h8;当bcd_8421的值为'h5时,bcd_2421的值为'h5。

希望这个程序能帮到你!

可以追加金额

可参考

提供参考实例【一位8421BCD码转5421码,2421码,余3码组合电路(附思路)】,链接:https://blog.csdn.net/qq_43965022/article/details/108587828

下面是一个示例代码,希望能帮到你:

#include
#include
#include

using namespace std;

int main() {
// 给定字符串
string target = "hello";
// 文件名
string filename = "text.txt";

// 打开文件
ifstream infile(filename);
// 判断文件是否打开成功
if (!infile.is_open()) {
    cout << "Error opening file" << endl;
    return -1;
}

// 读取文件中的每一行
string line;
int line_num = 1;
while (getline(infile, line)) {
    // 查找字符串在当前行的出现位置
    size_t pos = line.find(target);
    // 如果找到了,输出行号和位置
    if (pos != string::npos) {
        cout << "Found in line " << line_num <<


在 Verilog 中设计 8421-2421 码译码器,可以使用如下代码:

module decoder(
  input [3:0] a,
  output [2:0] y
);
  assign y = (a == 4'b0000) ? 3'b000 :
             (a == 4'b0001) ? 3'b001 :
             (a == 4'b0010) ? 3'b010 :
             (a == 4'b0011) ? 3'b011 :
             (a == 4'b0100) ? 3'b100 :
             (a == 4'b0101) ? 3'b101 :
             (a == 4'b0110) ? 3'b110 :
             3'b111;
endmodule

在这段代码中,输入端 a 是 8421 BCD 码,输出端 y 是 2421 BCD 码。通过使用条件表达式(? :)来实现 8421-2421 码的转换。

对于 8421 BCD 码的每一种情况,我们都使用一个条件表达式来指定对应的 2421 BCD 码值。例如,如果输入是 4'b0000,则输出为 3'b000。如果输入是 4'b0001,则输出为 3'b001。以此类推。

如果输入是 8421 BCD 码中未定义的值,则输出为 3'b111。这通常被称为不确定状态(X 状态),表示译码器无法处理这种输入。