当前位置:网站首页>数字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项),然后将它们或起来。
边栏推荐
- 外企高管、连续创业者、瑜伽和滑雪高手,持续迭代重构的程序人生
- 绝对真理和相对真理思考
- Yyds dry goods inventory has not revealed the artifact? Valentine's Day is coming. Please send her a special gift~
- Win11应用商店无法加载页面怎么办?Win11商店无法加载页面
- Global and Chinese market of desktop hot melt equipment 2022-2028: Research Report on technology, participants, trends, market size and share
- Student course selection system (curriculum design of Shandong Agricultural University)
- Classic quotations
- day4
- [fluent] dart data type boolean type (boolean type definition | logical operation)
- ⌈ 2022 ⌋ how to use webp gracefully in projects
猜你喜欢

unity Hub 登录框变得很窄 无法登录

SQL solves the problem of continuous login deformation holiday filtering

Yyds dry inventory method of deleting expired documents in batch

SSM integration exception handler and project exception handling scheme

⌈ 2022 ⌋ how to use webp gracefully in projects

sql解决连续登录问题变形-节假日过滤

Privacy computing technology innovation and industry practice seminar: Learning

Recalling the college entrance examination and becoming a programmer, do you regret it?

Pandora IOT development board learning (RT thread) - Experiment 2 RGB LED experiment (learning notes)
![[fluent] dart data type string type (string definition | string splicing | string API call)](/img/7b/cc624aa33f45fbed0bbe354253158b.jpg)
[fluent] dart data type string type (string definition | string splicing | string API call)
随机推荐
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...
Exploration and practice of integration of streaming and wholesale in jd.com
PCL point cloud image transformation
MySQL min() finds the minimum value under certain conditions, and there are multiple results
Yyds dry goods inventory student attendance system based on QT design
LeetCode 5. 最长回文子串
SSM integration exception handler and project exception handling scheme
Global and Chinese market of discharge machines 2022-2028: Research Report on technology, participants, trends, market size and share
Yyds dry goods inventory # look up at the sky | talk about the way and principle of capturing packets on the mobile terminal and how to prevent mitm
Pandora IOT development board learning (RT thread) - Experiment 2 RGB LED experiment (learning notes)
LeetCode 1. Sum of two numbers
OSPF - route aggregation [(summary) including configuration commands] | address summary calculation method - detailed explanation
Maui learning road (III) -- in depth discussion of winui3
[fluent] dart data type number type (DART file creation | num type | int type | double type | num related API)
数据安全产业系列沙龙(三)| 数据安全产业标准体系建设主题沙龙
What is normal distribution? What is the 28 law?
Global and Chinese market of jacquard looms 2022-2028: Research Report on technology, participants, trends, market size and share
Original God 2.6 server download and installation tutorial
Trigger: MySQL implements adding or deleting a piece of data in one table and adding another table at the same time
Unity使用UGUI设置一个简单多级水平方向下拉菜单(不需要代码)