Simulación Verilog del taxímetro
Se requiere que el taxímetro que se diseñará pueda mostrar el kilometraje y la tarifa a pagar por el pasajero. El kilometraje tiene una precisión de 0,1 km y la tarifa a pagar por el pasajero tiene una precisión de O. 1 yuan, la visualización debe estar en formato decimal. El estándar de cobro de taxis es: el precio inicial es de 6 yuanes y el kilometraje dentro de 3 km aumenta en 2,4 yuanes.
2 Plan de diseño del sistema
El diseño de este sistema se puede construir utilizando componentes discretos o se puede diseñar utilizando una microcomputadora de un solo chip. El uso de FPGA programable para diseñar. las ventajas del ciclo de diseño corto y la facilidad de uso. Modificaciones y otras características obvias, y con el rápido desarrollo de dispositivos lógicos programables y software EDA, cada vez más sistemas electrónicos se diseñan utilizando FPGA una vez que el sistema alcanza una cierta escala de producción en masa. Será más fácil convertirlo en un diseño de chip ASIC. Por lo tanto, se diseña un taxímetro basado en FPGA. En el software de herramienta EDA MAX plusⅡ, este sistema utiliza un método que combina el lenguaje de descripción de hardware Verilog HDL y el diseño esquemático para diseñar cada módulo y, finalmente, los módulos forman el sistema completo.
El taxi puede visualizar el kilometraje recorrido generando pulsos a través de la rotación de las ruedas, y luego contando los pulsos a través de un contador. Suponga que el taxi genera un pulso cada 2 m que recorre. Dado que el kilometraje debe ser exacto a O. 1 km, es decir, 100 m, por lo que se emitirá una nueva señal de pulso cada 50 pulsos, aquí llamada señal de pulso de 100 m. Como señal de reloj del contador de kilometraje, se puede obtener dividiendo la frecuencia por un contador con un. módulo 50.
El contador de kilometraje se puede implementar con un contador de código BCD de tres dígitos, que puede mostrar hasta 999. Los primeros dos dígitos son números enteros y el tercer dígito es un decimal, es decir, el kilometraje máximo que se puede mostrar es 99,9 km. Debido a que los taxis están activos en áreas urbanas y suburbios, un contador de código BCD de tres dígitos puede realizar el conteo de kilometraje. El contador de kilometraje también emitirá periódicamente una señal de pulso cada vez que cuente 1 km, llamada señal de pulso de 1 km, que se puede realizar a través de un determinado circuito combinado.
La parte central del sistema es cómo se implementa la facturación. Aquí necesitamos diseñar un sumador de códigos BCD. Sobre la base del precio inicial, de acuerdo con el kilometraje y el estándar de facturación, se agrega un precio unitario por cada kilómetro adicional. El precio unitario se puede generar escribiendo un programa usando Verilog. HDL. El diagrama de bloques de diseño general del sistema se muestra en la Figura 1.
2.1 Módulo de generación de precio unitario
El programa fuente Verilog HDL del módulo de generación de precio unitario es el siguiente:
Las señales de entrada bai y shi son las dos bits emitidos por el contador de kilometraje Kilometraje entero, la señal de salida jia es el precio unitario generado de acuerdo con el estándar de facturación, generado en forma de un código BCD de tres dígitos, los dos primeros dígitos son números enteros y el tercer dígito es un. decimal. Es decir, cuando el kilometraje está dentro de los 3 km, jia=0; cuando el kilometraje está entre 3 y 7 km, jia=016 (1,6 yuanes); cuando supera los 7 km, jia=024 (2,4 yuanes).
La ventaja de utilizar Verilog HDL para escribir programas para implementar funciones de módulo es que cuando cambian los estándares de carga de taxis, el nuevo diseño se puede completar fácilmente reescribiendo el programa, en comparación con la modificación de los circuitos de hardware. Es mucho más conveniente, lo que también es una ventaja importante de utilizar Verilog HDL para implementar funciones del módulo.
2.2 Sumador de código BCD de tres dígitos
En el sistema se utiliza un sumador de código BCD de tres dígitos, que puede realizar la suma de números decimales de tres dígitos. El resultado generado por el sumador es la tarifa a pagar por el pasajero. Aquí nuevamente, los dos primeros dígitos son números enteros y el tercer dígito es un decimal. Es decir, el valor máximo mostrado es 99,9 yuanes. El sumador de códigos BCD de tres bits se compone de tres sumadores de códigos BCD de un bit conectados en cascada.
Un código BCD consta de cuatro dígitos binarios. La operación de suma de cuatro dígitos binarios producirá un número mayor que 9 y se deben realizar los ajustes adecuados para producir el resultado correcto. El programa fuente Verilog HDL del sumador de código BCD de un bit es el siguiente:
La forma de onda de simulación y el símbolo del módulo generado del módulo sumador de código BCD de un bit se muestran en la Figura 2 y la Figura 3.
En este módulo, A y B son los códigos BCD de un bit de entrada, CIN es la señal de acarreo desde el bit bajo, CO es la señal de salida de acarreo generada por este módulo al bit alto y SUM es la suma de los dos números. El sumador de código BCD de tres dígitos se compone de tres módulos en cascada. Su esquema de circuito y forma de onda de simulación se muestran en la Figura 4 y la Figura 5.
2.3 Módulo de búfer
Después de que el resultado de salida del sumador de código BCD de tres dígitos pasa a través del búfer, se retroalimenta al extremo de entrada y se usa nuevamente como sumando. la señal de pulso de 1 km A continuación, cada pulso se suma al precio unitario, formando una función de acumulación continua. El buffer también tiene un terminal de entrada de control LD. Cuando LD=0, bajo la acción de un pulso de 1 km, la salida comienza en 6 yuanes; cuando LD=1, bajo la acción de un pulso de 1 km, la salida y la entrada son iguales. El programa fuente Verilog HDL del búfer es el siguiente:
2.4 Circuito general
Conecte cada módulo a un circuito general de acuerdo con la relación de entrada y salida, como se muestra en la Figura 6.
En el circuito general, clk es el terminal de entrada del reloj original, cr es el terminal de compensación asíncrono, q[11. . O] Kilometraje de salida, jiaqian[11. . O] Muestra la tarifa a pagar por el pasajero.
3 Verificación de simulación del sistema
La forma de onda de simulación del circuito general se muestra en la Figura 7.
Se puede ver en el diagrama de forma de onda de simulación del sistema 7 (a) que cuando la terminal de compensación cr = O, el kilometraje se compensa inmediatamente y la tarifa pagadera por el pasajero muestra el número decimal de tres dígitos. 060 (precio inicial 6 yuanes), lo que indica que el pasajero acaba de subir al autobús. Cuando la terminal clara cr = 1, el taxi comienza a viajar y el kilometraje y la tarifa comienzan a contarse. El kilometraje muestra tres dígitos decimales, los dos primeros dígitos son números enteros y el tercer dígito es un decimal, es decir, el. El número se cuenta cada 100 m recorridos.
Se puede ver en el diagrama de forma de onda de simulación del sistema 7 (b) que cuando se viaja a 3 km, el costo aumenta de 6 yuanes a 7,6 yuanes, y cuando se viaja a 4 km, el costo aumenta de 7,6 yuanes El aumento es de 9,2 yuanes, y al conducir entre 3 y 7 kilómetros, el aumento es de 1,6 yuanes por cada kilómetro recorrido.
El diagrama de forma de onda de simulación del sistema 7(c) muestra la acumulación gradual de costos después de conducir 1 km. La forma de onda de simulación del sistema verificó completamente los requisitos de diseño esperados.
4 Conclusión
La verificación de la simulación muestra que el taxímetro diseñado en este artículo normalmente puede mostrar el kilometraje recorrido y las tarifas a pagar por los pasajeros, y cumple con los estándares de facturación y requisitos funcionales predeterminados. . El diseño basado en FPGA tiene una alta integración y un ciclo de diseño corto. Especialmente cuando cambian los estándares de facturación, es fácil completar el nuevo diseño reescribiendo el programa fuente Verilog HDL.