牛客网verilog练习
奇偶校验
在Verilog中,^运算符作为单目运算符时的功能是"按位异或",作为双目运算符时的功能是"异或"。当data_in是一个8 bit的数据时,^data_in = data_in[0] ^ data_in[1] ^ data_in[2] ^ data_in[3] ^ data_in[4] ^ data_in[5] ^ data_in[6] ^ data_in[7]。就是检查bus中1的个数是否是成对的,如果成对,按位异或的结果是偶校验的结果,所以奇校验与偶校验相反。
`timescale 1ns/1ns
module odd_sel(
input [31:0] bus,
input sel,
output reg check
);
always@(*)begin
if(sel == 1'b1)begin
check <= ^bus;
end
else begin
check <= ~^bus;
end
end
endmodule
大小端准换
module Size-side conversion
#( parameter N = 4)
(
input [N-1:0] data,
input en,
output [N-1:0] output_data
);
always@(*) begin
if(en)
output_data = conversion(data)
else
output_data = 0;
end
function [N-1 :0] conversion;
input [N-1:0] old_data;
integer n;
begin
for(n = 0; n < N ; n = n + 1) begin
conversion[N-1-n] = old[n];
end
end
endfunction
endmodule
可综合和不可综合
综合就是EDA工具或者说综合工具把我们编写的verilog代码转化成具体电路的过程。Verilog中有很多语法,结构,过程,语句,有些是可以综合的,有些是不可以综合的,不可综合的语句或者语法通常用在testbench中,只是用来仿真验证。
有些语法结构是不能与实际硬件电路对应起来的,也就是说我们在把一个语言描述的程序映射成实际硬件电路中的结构时是不能实现的。
(1)所有综合工具都支持的结构:always,assign(wire),begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter,generate。
(2)所有综合工具都不支持的结构:time,defparam $finish,fork,join,initial,delays,UDP,wait,events, real, 敏感列表中同时带有posedge和negedge 。
(3)有些工具支持有些工具不支持的结构:casex,casez,wand,triand,wor,trior,real,disable,forever,arrays,memories,repeat,task,while。
operators: 各种操作符,比如+,-,&,|等等。
instantitation:实例化语句
相关文章
- Java实现 蓝桥杯VIP 基础练习 芯片测试
- Java实现 蓝桥杯VIP 基础练习 报时助手
- Java实现 蓝桥杯 基础练习 闰年判断
- Java实现 蓝桥杯 基础练习 查找整数
- 最新作的关于指针,函数指针,线性表的练习存档
- 一个利用System.gc和finalize研究Java垃圾回收机制的练习
- 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1006 拿金币
- 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-459 区间求和
- 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-79 删除数组零元素
- 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 十六进制转十进制
- MySQL练习sql脚本(某校学生管理系统版本)
- 在线xss练习平台
- HDLBits练习汇总-04-Verilog语言--程序部分
- Verilog小练习- 看时序写代码--学习自测(完结篇)
- Verilog小练习- 看时序写代码(05--06)
- 试题 基础练习 十六进制转八进制
- Python练习1
- Python练习9