当前位置:网站首页>数字IC手撕代码--投票表决器
数字IC手撕代码--投票表决器
2022-07-02 13:24:00 【FPGA硅农】
题目
设计一个投票表决器,输入为一个5bit的向量,为1表示赞同,为0表示不赞同,当赞同人数大于非赞同人数时,表决器输出为1,否则为0。
思路:一种方法是统计向量中1的个数,若大于等于3,则输出1,否则输出0。另一种方法是考虑所有可能的情况,事实上,只要有三个位的值为1,则表决器就输出1,因此可据此进行枚举( C 5 3 = 10 C_5^3=10 C53=10),得到最终的结果。
代码
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2022/07/01 15:19:05
// Design Name:
// Module Name: top
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module top(
input logic clk,
input logic rst,
input [4:0] vote,
output logic r1,
output logic r2
);
//1
[email protected](posedge clk,posedge rst)
if(rst)
r1<=0;
else
r1<=(vote[0]&vote[1]&vote[2])
|(vote[0]&vote[1]&vote[3])
|(vote[0]&vote[1]&vote[4])
|(vote[0]&vote[2]&vote[3])
|(vote[0]&vote[2]&vote[4])
|(vote[0]&vote[3]&vote[4])
|(vote[1]&vote[2]&vote[3])
|(vote[1]&vote[2]&vote[4])
|(vote[1]&vote[3]&vote[4])
|(vote[2]&vote[3]&vote[4]);
//2
logic s1;
logic c1;
logic s2;
logic c2;
logic [2:0] sum;
assign {
c1,s1}=vote[0]+vote[1]+vote[2];
assign {
c2,s2}=vote[3]+vote[4];
assign sum={
c1,s1}+{
c2,s2};
[email protected](posedge clk,posedge rst)
if(rst)
r2<=0;
else if(sum>=3)
r2<=1;
else
r2<=0;
endmodule
测试平台
module test;
logic clk;
logic rst;
logic [4:0] vote;
logic r1;
logic r2;
logic error;
//clk
initial
begin
clk=0;
forever
#5 clk=~clk;
end
//rst
initial
begin
rst=1;
#100
rst=0;
end
//
[email protected](posedge clk,posedge rst)
if(rst)
vote<=0;
else
vote<=$urandom%32;
//
assign error=(r1!=r2)?1:0;
top U(.*
/* input logic clk, input logic rst, input [4:0] vote, output logic r1, output logic r2 */
);
endmodule
结果

总结
对于N输入的表决器(N为奇数),我们同样可以采用类似的方法:
1.通过加法器求1的个数,若和大于(N-1)/2,则输出为1
2.枚举这N个输入的(N+1)/2组合(共 C N ( N + 1 ) / 2 C_N^{(N+1)/2} CN(N+1)/2项),然后将它们或起来。
边栏推荐
- LeetCode 6. Zigzag transformation (n-shaped transformation)
- Sim2real environment configuration tutorial
- Which software is good for machine vision?
- Analysis of how to prevent virus in industrial computer
- Ranger (I) preliminary perception
- How to solve the failure of printer driver installation of computer equipment
- 618 deep resumption: Haier Zhijia's winning methodology
- Global and Chinese markets for carbon dioxide laser cutting heads 2022-2028: Research Report on technology, participants, trends, market size and share
- Global and Chinese market of discharge machines 2022-2028: Research Report on technology, participants, trends, market size and share
- Recalling the college entrance examination and becoming a programmer, do you regret it?
猜你喜欢

Mathematical analysis_ Notes_ Chapter 6: Riemann integral of univariate function

PWM控制舵机

SSM整合-异常处理器及项目异常处理方案

unity Hub 登錄框變得很窄 無法登錄

Kubernetes family container housekeeper pod online Q & A?

Résumé de l'entrevue de Dachang Daquan

Memory alignment of structure

Everyone Xinfu builds: a one-stop intelligent business credit service platform

电脑设备打印机驱动安装失败如何解决

SQL solves the problem of continuous login deformation holiday filtering
随机推荐
Everyone Xinfu builds: a one-stop intelligent business credit service platform
Exploration and practice of integration of streaming and wholesale in jd.com
PCL least median square method fitting plane
Yyds dry inventory uses thread safe two-way linked list to realize simple LRU cache simulation
SSM integration exception handler and project exception handling scheme
Mathematical analysis_ Notes_ Chapter 6: Riemann integral of univariate function
关于mysql安装的一些问题
2022 the latest and most detailed will successfully set the background image in vscade and solve unsupported problems at the same time
Mysql database mysqldump why there is no statement to create a database
Global and Chinese markets for disposable insulin pumps 2022-2028: Research Report on technology, participants, trends, market size and share
Some problems about MySQL installation
Unity Json 编写
云原生的 CICD 框架:Tekton
unity Hub 登錄框變得很窄 無法登錄
Effectively use keywords to increase Amazon sales
[error record] the connection of the flutter device shows loading (disconnect | delete the shuttle/bin/cache/lockfile file)
Recalling the college entrance examination and becoming a programmer, do you regret it?
Yyds dry inventory executor package (parameter processing function)
路由模式:hash和history模式
618深度複盤:海爾智家的制勝方法論