当前位置:网站首页>数字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项),然后将它们或起来。
边栏推荐
- PCL 最小中值平方法拟合平面
- TCP server communication process (important)
- 618深度複盤:海爾智家的制勝方法論
- Bone conduction non ear Bluetooth headset brand, bone conduction Bluetooth headset brand recommendation
- According to the atlas of data security products and services issued by the China Academy of information technology, meichuang technology has achieved full coverage of four major sectors
- day4
- Aike AI frontier promotion (2.15)
- Memory alignment of structure
- mysql数据库mysqldump为啥没有创建数据库的语句
- Multi task prompt learning: how to train a large language model?
猜你喜欢
Trigger: MySQL implements adding or deleting a piece of data in one table and adding another table at the same time
[error record] the connection of the flutter device shows loading (disconnect | delete the shuttle/bin/cache/lockfile file)
Vscade set multi line display of tab
Yyds dry goods inventory student attendance system based on QT design
JS learning notes - operators
数据安全产业系列沙龙(三)| 数据安全产业标准体系建设主题沙龙
Résumé de l'entrevue de Dachang Daquan
sql解决连续登录问题变形-节假日过滤
Summary | three coordinate systems in machine vision and their relationships
[fluent] dart data type string type (string definition | string splicing | string API call)
随机推荐
Written by unity Jason
LeetCode 1. Sum of two numbers
What is Amazon keyword index? The consequences of not indexing are serious
PWM控制舵机
[fluent] dart data type boolean type (boolean type definition | logical operation)
Classic quotations
day4
Source code look me
Which software is good for machine vision?
图书管理系统(山东农业大学课程设计)
Mathematical analysis_ Notes_ Chapter 6: Riemann integral of univariate function
Aujourd'hui dans l'histoire: Alipay lance le paiement par code à barres; La naissance du père du système de partage du temps; La première publicité télévisée au monde...
头条 | 亚控科技产品入选中纺联《纺织服装行业数字化转型解决方案重点推广名录》
mysql数据库mysqldump为啥没有创建数据库的语句
PyC file decompile
What is the difference between self attention mechanism and fully connected graph convolution network (GCN)?
LeetCode 3. Longest substring without duplicate characters
隐私计算技术创新及产业实践研讨会:学习
Analysis of how to prevent virus in industrial computer
Practice of traffic recording and playback in vivo