这里以简单的3-8译码器和8-3编码器为例:

module decoder3_8(a,out);
input [:]a;
output [:]out;
assign out='b1<<a;/*把最低位的1左移in位(根据in口输入的值)并赋予out*/
endmodule

8-3编码器程序:

1)利用for循环

 module encoder8_3(a,out,none_on);
input [:]a;
output [:]out;
output none_on;
reg [:]out;
reg none_on; //要在always块中赋值,必须为reg型数据 always @(a)
begin:local //这里必须要有定义顺序块的名字,因为后面要定义局部变量,有可能被实例化调用
integer i;
out=;
none_on=;
for(i=;i<;i=i+) //这里代表返回输入信号a的8位中,为1的最高位数,即高位优先编码;
begin //如果需要低位优先编码,只需要改成 for(i=7;i>=0;i=i-1)
if(a[i])
begin
out=i;
none_on=;
end
end
end
endmodule

2)利用?:三目运算符

 module encoder8_3(a,b,c,d,e,f,g,h,out1,out2,out0,none_on);
input a,b,c,f,d,e,g,h;
output out0,out1,out2,none_on;
wire [:]outvec; assign outvec=h?'b0111:g?4'b0110:f?'b0101:e?4'b0100:d?'b0011:c?4'b0010:b?'b0001:a?4'b0000:'b1000;
assign out0=outvec[];
assign out1=outvec[];
assign out2=outvec[];
assign none_on=outvec[];
endmodule

3)利用条件语句

 module encoder8_3(a,b,c,d,e,f,g,h,out1,out2,out0,none_on);
input a,b,c,f,d,e,g,h;
output out0,out1,out2,none_on;
reg [:]outvec; always @(a or b or c or d or e or f or g or h)
begin
if(h) outvec='b0111;
else if(g) outvec='b0110;
else if(f) outvec='b0101;
else if(e) outvec='b0100;
else if(d) outvec='b0011;
else if(c) outvec='b0010;
else if(b) outvec='b0001;
else if(a) outvec='b0000;
else outvec='b1000;
end
assign out0=outvec[];
assign out1=outvec[];
assign out2=outvec[];
assign none_on=outvec[];
endmodule

Verilog学习笔记简单功能实现(四)...............译码器和编码器的更多相关文章

  1. Verilog学习笔记简单功能实现(八)...............同步FIFO

    Part 1,功能定义: 用16*8 RAM实现一个同步先进先出(FIFO)队列设计.由写使能端控制该数据流的写入FIFO,并由读使能控制FIFO中数据的读出.写入和读出的操作(高电平有效)由时钟的上 ...

  2. Verilog学习笔记简单功能实现(三)...............同步有限状态机

    在Verilog中可以采用多种方法来描述有限状态机最常见的方法就是用always和case语句.如下图所示的状态转移图就表示了一个简单的有限状态机: 图中:图表示了一个四状态的状态机,输入为A和Res ...

  3. Verilog学习笔记简单功能实现(二)...............全加器

    先以一位全加器为例:Xi.Yi代表两个加数,Cin是地位进位信号,Cout是向高位的进位信号.列表有:   Xi     Yi    Cin Sum Cout 0 0 0 0 0 0 0 1 1 0 ...

  4. Verilog学习笔记简单功能实现(六)...............计数分频电路

    在分频器电路中最重要的概念有两个:1)奇分频/偶分频:2)占空比. A)其中最简单的就是二分频电路,占空比为50%,其Verilog程序为 module half_clk(clr,clk_in,clk ...

  5. Verilog学习笔记简单功能实现(五)...............序列检测设计

    这里采用夏宇闻教授第十五章的序列检测为例来学习; 从以上的状态转换图可以写出状态机的程序: module seqdet(x,out,clk,rst); input x,clk,rst; output ...

  6. Verilog学习笔记简单功能实现(一)...............D触发器

    module D_flop(data,clk,clr,q,qb); input data,clk,clr; output q,qb; wire a,b,c,d,e,f,ndata,nclk; nand ...

  7. Verilog学习笔记简单功能实现(八)...............异步FIFO

    基本原理:       1.读写指针的工作原理 写指针:总是指向下一个将要被写入的单元,复位时,指向第1个单元(编号为0). 读指针:总是指向当前要被读出的数据,复位时,指向第1个单元(编号为0). ...

  8. Verilog学习笔记简单功能实现(七)...............接口设计(并行输入串行输出)

    利用状态机实现比较复杂的接口设计: 这是一个将并行数据转换为串行输出的变换器,利用双向总线输出.这是由EEPROM读写器的缩减得到的,首先对I2C总线特征介绍: I2C总线(inter integra ...

  9. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十四章:曲面细分阶段

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十四章:曲面细分阶段 代码工程地址: https://github. ...

随机推荐

  1. Atitit j2ee5 jee5 j2ee6 j2ee7 jee6 jee7 新特性

    Atitit j2ee5 jee5 j2ee6 j2ee7 jee6 jee7 新特性 Keyword Java ee5 ,Java ee6,Java ee7  j2ee5 jee5 j2ee6 j2 ...

  2. OutputCache属性详解(二)一 Location

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  3. 设置easyui input默认值

    /*设置input 焦点*/ $(function () { //集体调用 $(".formTextBoxes input").each(function () { $(this) ...

  4. 安装指定版本的cordova

    安装指定版本的cordova 刚接触cordova看到教程肯定是直接 npm install -g cordova 然后下载个集成的adt 以为万事大吉,开始hello world 玩玩没有想到最新的 ...

  5. Struts2学习笔记 - HelloWorld总结

    相信网上已经有很多关于struts2的HelloWorld可参考,我这里就不重复了,没个学struts2的人都会做过很多个HelloWorld,而我这里就总结一下一个简单的HelloWorld 我在一 ...

  6. ng-表单验证

    表单验证<AngularJs>   常用的表单验证指令 1. 必填项验证 某个表单输入是否已填写,只要在输入字段元素上添加HTML5标记required即可: <input type ...

  7. 30分钟全面解析-图解AJAX原理

    先上原理图: 高清无码图在这里:点我查看大图!!! 背景: 1.传统的Web网站,提交表单,需要重新加载整个页面. 2.如果服务器长时间未能返回Response,则客户端将会无响应,用户体验很差. 3 ...

  8. CSS学习目录

    前面的话 CSS是前端工程师的基本功,但好多执迷于学习javascript的人的基本功并不扎实.可能一些人从w3school网站匆匆过了一遍,只是对CSS常用概念有一些表面上的理解,就一头扎进java ...

  9. vs xamarin android StartActivity

    跳转无需intent,直接给要跳转的activity的type就可以了 StartActivity(typeof(Login));

  10. Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l“机器学 ...